トランザクション関手
f : A → B :+ E に対して try(f) : A → B+E :+ 0 というtryの定式をもとに、モノイダルスタンピングモナドのトランザクション(transaction)を関手として定式化できた。
射のプロファイルが問題で、f:A → M×B :+ E という射を次のプロファイルに変換する:
- tranz(f):A+1 → M×B+1 :+ 0
failed: E→M×1 という射は、!E;
関手なので、tranz(f;g) = tranz(f);tranz(g)。ベキ等関手 tranz(tranz(f)) になっている。
この方法で、色々な例外処理を定義できそう。そんな例が処理を組み込みにするのはなんか変だ。やっぱり関手定義機能が必要なのか。