catchじゃなくてwatch
戻り値Bでエラー(丸括弧で囲む)がEの関数は、A→B+(E)。Eをcatchすると、A→B+E。となると、もともと A→B+E である例外しない関数を A→B+(E) とするのが、場合分けthrowってことになる。when { y∈B => return y, y∈E => throw y}。
ある範囲内の射を全部に場合分けthrowを付けて、その範囲を見張ってcatchすることができる。場合分けthrowとcatch(古典的なcatch式)を一緒にしたのをwatchとして使ったらいいかもしれない。
ただし、大問題は、NGのようなタグを全部同一視してしまうので、エラーの発生源を特定できない。特定するには、エラーごとに別なタグを付ける必要がある。これが実用的かどうか? watchの出番もワンポイントつうか限定的になりそう。ホントにいるかどうか分からん。