完整的哈斯克尔新手在这里,我的歉意....Haskell:我是否在重塑Monad Monad?
我想创建一个序列的值出另一个序列和最后一个值生成(所以它不是完全明显的我将如何使用地图)。
在clojure中,我会使用一个loop
构造,它基本上等同于递归函数。所以我想,我可以用这个问题,沿着
genSequence :: [a] -> [b] -> [a]
genSequence result [] = reverse result
genSequence a:as b:bs = genSequence ((computeNextA a b):a:as) bs
行递归函数,我想这是没有那么糟糕(真正的功能当然是更复杂...),但我读到单子(请阅读Philip Walder的优秀教程,然后介绍clojure中monad的一些内容),并且无法帮助我在这里使用它们的感觉。不幸的是,迄今为止,我对monads的理解纯属理论上的,所以如果你能帮助我,我将非常感激。
退房'mapAccumL'(这实在是一个专门的'mapM'在国家monad)。 – augustss
如果我正确理解你,'foldl'就足够你的序列生成器的例子:'反向。 foldl'(\ a x - > computeNextA(head a)x:a)listA $ listB' –
@augustss会这样做,谢谢。事实证明,我不会在这里需要它... – Paul