Haskell:有这样的运算符:(< $$>):: Functor f => f a - > (a - > b) - > f b

时间:2016-08-21 13:36:12

标签: haskell

可以通过这种方式找出Haskell中的地图和平面地图,

xs >>= f          ≃ flatMap f xs
xs >>= return . f ≃ map f xs

我认为如果我们有这样的操作员会很方便

(<$$>) :: Functor f => f a -> (a -> b) -> f b
f <$$> fn = fn <$> f

这样可以更整洁地表达地图:

xs >>=  f ≃ flatMap f xs
xs <$$> f ≃ map f xs

这样的运算符是否存在于Haskell的标准库中?

2 个答案:

答案 0 :(得分:4)

它不在base包中的任何位置。导出此函数的最常用库是lensas <&>

答案 1 :(得分:2)

另请注意,与翻转参数一样,操作符部分可能“足够”,并且可能通过限制新运算符的引入来保持可读性:

> :{
| (<$> Just 0) $ \x ->
|   x + 1 + 1 + 1
|     + 1 + 1 + 1
|     + 1 + 1 + 1
|     + 1 + 1 + 1
| :}
Just 12