私はかなりハスケルを新しくしており、ゆっくりとモナドの存在に何か問題があるという考えを得ています。 Real World Haskell warns against its use(「もう一度、ほとんどの場合、失敗を避けることをお勧めします!」)。私は今、ロス・パターソンが「疣贅であり、デザイン・パターンではありません」とback in 2008と呼んでいることに気付きました(そしてそのスレッドでかなりの合意を得ているようです)。Monadの使用を避けるべきですか?
Dr RalfLämmeltalk on the essence of functional programmingを見て、私はモナドが失敗する可能性のある緊張を理解し始めました。講演では、基本モナドパーサー(ロギング、状態など)にさまざまなモナディック効果を追加することについてRalfが話します。エフェクトの多くは、ベースパーサーの変更と、使用されるデータ型の変更が必要でした。私は、すべてのモナドに「失敗」を追加することは、「失敗」が非常に一般的で、可能な限り「ベース」パーサー(または何でも)への変更を避けるために妥協であったかもしれないと考えました。もちろん、ある種の「失敗」はパーサーには意味がありますが、必ずしも状態を入れたり取得したりすることはできません。
私が間違ったトラックに乗る可能性があるかどうか教えてください。
モナドの使用を避けるべきですか? Monadに代わる方法は何ですか? この「デザインの疣贅」を含まない代替モナド図書館はありますか? このデザイン決定の歴史に関する詳細はどこで確認できますか?
[Real World Haskell says](http://book.realworldhaskell.org/read/monads.html#monads.monad.fail) "[多くのモナドでは]' fail'は 'error'を使用しています。呼び出し元が捕まえることができない、または期待しないという例外をスローするため、通常は非常に好ましくありません。 – Miikka
短い答え:はい。 –
"Just x < - somethingReturningIoMaybe"のように、パターンマッチの失敗を処理するには "失敗"が必要だと思います。 –