Sanırım burada iki kafa karıştırıcı bit var.
Birincisi, en belirgin olanı, sum
'un sadece listelerde değil Foldable
şeyler üzerinde çalıştığıdır. Bu nedenle, kullandığınız functor örneği ikinci olur. Just
bir işlevi olduğu için, fmap
ikinci bağımsız değişkeni olduğu gibi, burada (https://hackage.haskell.org/package/base-4.9.1.0/docs/src/GHC.Base.html#line-638) yalnızca (.)
olarak tanımlanmış fmap okuyucu örneğini kullanıyorsunuz.
Prelude> :t fmap sum Just
fmap sum Just :: Num b => b -> b
:
sen aslında (Sadece fmap toplamı) sonucunu fmap üç argüman besleyen, fakat, çünkü garip görünüyor ve kontrol tipi olmamalı gibi bir işlevdir fmap
'u .
ile değiştirirsek, işler biraz daha anlamlı hale gelir.
sum (Just 3)
eminim aynıdır
deneyebileceğiniz [it] (https://www.tryhaskell.org/). –
Evet, 'toplamı' Data.Foldable' – zerkms