例外処理の原則
error関数の禁止
純粋関数空間の中で例外を投げられるerror関数の使用は原則として禁止です。
haskell-tasuke:partial-function でも触れましたが、 純粋関数空間で例外を投げてしまうと、 呼び出し側で捕捉するのが困難だからです。
また例外に入っているのがStringという非構造化されたデータであると、
デバッグが難しくなります。
throw(導入されている場合は非純粋であることを明示したimpureThrow)の方が、
例外に型がついているという点ではまだマシですが、
こちらも純粋関数空間で例外を投げているのは同じなのでやはり推奨されません。
呼び出し側にMonadThrowやEitherなどを使ってエラー情報を伝播させてください。
例外
論理的にどう考えても発生しないはずの場所なら許容されます。
そんなおかしなことが起きているなら、 アプリケーション自体を終了させるのが適切なレベルの話です。
それでもなるべ
[Description truncada. Veja o README completo no GitHub.]