Haskell foldl Monad绑定

时间:2018-05-04 15:03:00

标签: haskell fold state-monad

我有一个功能

move :: Move -> Node -> Maybe Node

我可以使用我的绑定monad获取Maybe Node

(return n >>= move m) 

其中n :: Node和m :: Move,但我现在如何折叠Moves([Move])列表?

我尝试用foldl做但没有成功。

1 个答案:

答案 0 :(得分:6)

如果您有初始Node[Move],则可以使用foldM

moveAll :: Node -> [Move] -> Maybe Node
moveAll startNode moves = foldM (\n m -> move m n) startNode moves

或只是

moveAll = foldM (flip move)