Haskell concatMap点免费解释

时间:2016-08-24 14:25:12

标签: haskell

我正在努力弄清concatMap=<<运算符的关系。有人可以解释一下原因:

f x = concatMap g $ take 5 $ x

变为

f = (g =<<) . take 5

点免费。我可以看到concatMap=<<的类型匹配,但我不明白为什么。

1 个答案:

答案 0 :(得分:3)

=<<替换为concatMap与无点无关。

列表的

>>=被定义为concatmap的组合(后者相当于concatMap):

xs >>= f = concat (map f xs)

当然=<<只是>>=翻转。

有关列表的monad实例的说明,请访问:https://en.wikibooks.org/wiki/Haskell/Understanding_monads/List