完全なHaskellの初心者ここでは、私の謝罪....私は別のシーケンスと生成された最後の値のうち、値のシーケンスを作成しようとしていますハスケル:私はリストモナドを改革していますか?
が(だから、私はマップを使用する方法を私に完全に明白ではありません)。
私はloop
構造を使用しますが、これは基本的に再帰関数と同等です。だから、私は
genSequence :: [a] -> [b] -> [a]
genSequence result [] = reverse result
genSequence a:as b:bs = genSequence ((computeNextA a b):a:as) bs
の線に沿って再帰関数でこの問題を使用すると考えていたと私は、これはそれほど悪くはないと思います(実際の機能はもちろん、より複雑です...)しかし、私はモナドについて読ん(優秀なチュートリアルをPhilip Walderで読んでから、クロージャーのモナドに関するいくつかのものを読んでください)、私がここでそれらを使用するべきだという気持ちを助けることはできません。これまでのところ、モナドに関する私の知識は純粋に理論的なものであり、残念なことに、あなたが私を助けてくれれば非常に感謝しています。
チェックアウト '本当に特化されmapAccumL'('と同等ですmapM'州のモナドで)。 – augustss
私が正しく理解していれば、シーケンス生成プログラムの例では 'foldl 'で十分です:' reverse。 foldl '(\ a x - > computeNextA(head a)x:a)listA $ listB' –
@augustssありがとう、ありがとう。それが判明したので、私はここでそれを必要としません... – Paul