在函數子類的定義,我們的<$
函數定義爲:
class Functor f where
fmap :: (a -> b) -> f a -> f b
(<$) :: a -> f b -> f a
(<$) = fmap . const
的const
函數的定義:
const :: a -> b -> a
const x _ = x
我知道<$
功能等同於:
\x -> fmap (const x)
fmap . const
如何等於上面的lambda表達式?我對函數組合的理解是輸出類型const
應該與輸入類型fmap
匹配,但輸入類型fmap
是函數(a -> b)
而不是a
這是const
函數輸出的內容。
你的問題啓發了我檢查Data.Map的'<$'的定義。在下一個版本中它會更快。謝謝! – dfeuer