我正在努力弄清concatMap
与=<<
运算符的关系。有人可以解释一下原因:
f x = concatMap g $ take 5 $ x
变为
f = (g =<<) . take 5
点免费。我可以看到concatMap
和=<<
的类型匹配,但我不明白为什么。
答案 0 :(得分:3)
将=<<
替换为concatMap
与无点无关。
>>=
被定义为concat
和map
的组合(后者相当于concatMap
):
xs >>= f = concat (map f xs)
当然=<<
只是>>=
翻转。
有关列表的monad实例的说明,请访问:https://en.wikibooks.org/wiki/Haskell/Understanding_monads/List