6

私はこの質問に対する答えを探していて、このブログ投稿を見つけました。モナドに制約されていないので、それfailよりも利点があると言われています。errorIO

コード全体failの代わりに使用する必要がありますか?で可能な例外を発生させますかerrorfailControl.Exception.catchIO

編集:上記のリンクの更新を見つけました。

4

1 に答える 1

8

これが私のアドバイスです:

  • IOすでにコードを使用している場合は、throwIOfromを介して適切な例外を使用してくださいControl.Exception

  • コードですでにモナドスタックが使用されている場合、まだサポートされていない場合はモナドスタックにエラーを追加し、それらを使用します。

  • 非モナディックコードを使用している場合は、トータル関数を記述します。つまり、可能であれば、パターンを避けerrorて不完全にします。ここで使用failすると、コードが不必要に単調になるだけです。例外的な結果が必要な場合は、適切なデータ型(MaybeまたはEitherまたはカスタムデータ型など)を使用してください。

于 2012-12-14T12:31:42.737 に答える