for
是flip traverse
。
forM
是flip mapM
。
等等for_
,等等。
怎么样foldMap
?这是孤独的。
flip foldMap = ?
for
是flip traverse
。
forM
是flip mapM
。
等等for_
,等等。
怎么样foldMap
?这是孤独的。
flip foldMap = ?
如果每个 2 参数函数都有一个翻转的对应物,那将是愚蠢的。这些for
变体之所以有价值,主要是因为它们与do
记谱法配合得非常好,以一种非常容易记住例如 Python 循环的方式。
main = do
...
forM_ [0..9] $ \i -> do
print i
...
return ()
因为foldMap
您仍然可以从$
RHS 上的语法预示 +lambda 中受益,但是您不会处于 monad 中(至少不是这样使用的),不会使用do
符号,并且可能无论如何都需要一些括号。foldMap
因此,与中间带括号的函数的常规相比,没有太多优势。