代码之家  ›  专栏  ›  技术社区  ›  Ben373

Haskell foldl单子绑定

  •  1
  • Ben373  · 技术社区  · 6 年前

    我有一个函数

    move :: Move -> Node -> Maybe Node
    

    在这里,我可以使用bind monad获取Maybe节点

    (return n >>= move m) 
    

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

    我试图用foldl做这件事,但没有成功。

    1 回复  |  直到 6 年前
        1
  •  6
  •   Lee    6 年前

    如果你有首字母 Node 和a [Move] 您可以使用 foldM :

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

    或者只是

    moveAll = foldM (flip move)