< $ in Maybe definition

时间:2017-06-29 19:38:35

标签: haskell

Prelude> (fmap . const ) 2 Just 3
2
Prelude> 2 <$ Just 3
Just 2
Prelude> :t (<$)
(<$) :: Functor f => a -> f b -> f a
Prelude> :t fmap . const
fmap . const :: Functor f => b -> f a -> f b

在仿函数中,

(<$)        =  fmap . const   

为什么我为Maybe得到不同的结果?在Maybe中找不到<$的实现。感谢。

2 个答案:

答案 0 :(得分:6)

(fmap . const) 2 Just 3相当于((fmap . const) 2 Just) 3,其中2 <$ Justconst 2const 2 32

你的意思是:

(fmap . const) 2 $ Just 3

答案 1 :(得分:6)

问题是您输入了(fmap . const) 2 Just 3。我相信你的意思是(fmap . const) 2 (Just 3)。在前者中,函数fmap . const应用于三个参数,即2Just3,而在后者中,您的表达式确实等同于{{ 1}}。

2 <$ Just 3