私はユーザー、グループ、およびユーザーとグループの間のマッピングのセットを持っています。私はこれらのセットを操作するさまざまな機能を持っていますが、存在しないユーザーにはグループ< - >グループマッピングを追加することはできません。また、メンバーをユーザーとして持つグループを削除しないでください。Haskellの「例外」
So基本的には、これらの関数が呼び出し側が明示的に処理しなければならない「例外」をスローする必要があります。
私が最初にこのような何かを返す考える:
data Return r e = Success r | Exception e
を、呼び出し元がException
に対してパターンマッチをに失敗した場合、彼らはうまくいけば、コンパイラの警告を取得し、または非常に少なくとも明白なランタイムを持っています問題が発生した場合はエラーとなります。
これは最善のアプローチですか、これを行うパッケージ化されたソリューションがありますか?注:私はIO Monadではなく、純粋なコードで "例外"をスローして捕捉する必要があります。