このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

例外モナドのこととか

A|→A + E が、直和スタンピングモナド、つまり例外モナドだとする。Eを固定した単一モナドでは、モナド乗法 (A + E) + E → A + E は、1回目の計算で起きた例外と、2回目に起きた例外を一緒くたにする。「ともかくも、例外起きたぞ、どこで起きたかは知らんが」ってことね。乗法=「エラーの出現場所を忘れる」操作。忘れられるのは、エラーがどこで起きても一律一様なエラー情報だから。これが、エラー情報そのものに個性があると一律には扱えない。

別な言い方をすると、複数の計算をまとめて1つの計算とみなせる、ってことね。このためには、複数の計算が同類である必要がある。つまりは、同じクライスリ圏に属するクライスリ射である、と。

エラー情報であるEが違えば、もはや違うクライスリ圏に属するのでそのままストレートにエラー出現位置をつぶすことができない。それで、もっと系統的な計算が必要になる。一般論としては、モナドごとにクライスリ圏を生やした圏バンドルになる。とはいえ、圏バンドルの底として Mnd(C) が必要なわけでもなくて、Cでも十分。

例外モナド(自明モノイドの直和スタンピングモナド)に限ると、モナドはCの対象でインデックスされる。C→Mnd(C) は埋め込みとなり、Cの直和が Mnd(C)(つうかEnd(C))のモノイド積に移る。埋め込みの像であるEnd(C)の部分圏を考えると、それはCと同型になる(だろう)。直和の対称性が、モナド側ではベック・スワッパーになっているので、任意の2つのモナドを合成(モノイド積)できる。E + F →G のような射(写像)も、モナド側ではモナド準同型になるので、関手結合をあたかも直和のごとく扱った計算ができる。

直積スタンピングのコモナドでも事情は同じ。

裏を取るために、もっとたくさん計算を実行したいのだが、時間と気力が欠けている。

[追記]計算したいという希望はあるんだけどな。その意味では気力ゼロではない。が、まとまった時間と体力がどうもね。計算て体力使うよ、ほんっとに。[/追記]