エラーモナドでは、最初の失敗は実行を停止し、後続のバインドを介して障害を運ぶだけです。
どのモナドが成功を止めるのは、成功のみを先送りし、基本的には障害を飲み込み、前の失敗を無視して次のバインドを試みますか?
エラーモナドは、成功のようなこの失敗の処理に使用できますが、デフォルトのライブラリにこの特定の目的のためのモナドがあるかどうか、私の心のOrモナドのように、「これか、それか」に興味があります。
編集:
動作は次のようになります:
Left "fail" >>= (\x -> Right "win") >>= (\x -> Left "ahh neener") >>= (\x -> Right (x + " yay"))
エラーモナドでは、最初の左の値がそのまま繰り越されるため、その結果はになりLeft "fail"
ます。私が望む動作は、上記が返すところですRight "win yay"
私が自分で書くことができる実装するのは簡単なモナドですが、そのようなことをするために存在するものを考えました(Eitherを使用していないかもしれませんが、そのような動作について最初に頭に浮かぶのはそれです)。
なぜ反対票か。この質問について何か悪いことはありますか?
—
ジミーHoffa
あなたの考えを示す小さなコードスニペットを提供できますか?
—
Daniel Gratzer
バックトラックを考えているのでしょうか?
—
スカー冷蔵庫2013年