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