Concurrent Clean : PassFail

値を返すかエラーを返す場合には、PassFailという型を定義しているけれど、値を返さないかエラーを返す場合はどうしようか?
SQLモジュールでは、Maybeを使って表現していたけれど、はっきりそれと分かる型を用意しておく方がよいように思う。

:: PassFail f p = Pass !p
                | Fail !f