読者です 読者をやめる 読者になる 読者になる

北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

モニャドセミナー4

math Monad メモ

モニャドセミナー4行ってきました。懇親会は体調不良でドタキャンでした*1、すみません。

コモノイド

デュアル→射を逆に→2項演算も逆になる(写像にならない)、と端的に捉えて疑問に思ってしまったのですが、要は定義となるモナド風な可換図式*2の矢印を逆にしただけってことでした。で、さらに具体的な話で言えば、「SetsのモノイドがSetsの双対圏でどう見えるか」ではなく「Setsの双対圏のモノイドが、Setsでどう見えるか(コモノイドとして見える)」であったってことですね。

と言うか、「イコライザの双対はコイコライザ」と言う時も、具体的な圏(今回の勘違いだとSets)の双対を考えるのではなく任意の圏に対しての定義の双対を考えるわけだから、単にそれと同じってことですね。完全に混乱してましたorz

有界の有限カウンタ

up:{0, .., 9}→{0, .., 9}とdownを用意して、up(0) = 1, ..., up(8) = 9, up(9) = 9 と上限を持たせた計算としたものです。upすると1ずつ増えますが、9以上は増えません。

で、これを(+3)とか(-4)と記法したらうまくいくのかと言う話が出たのですが、帰りの電車で頭痛と吐き気に襲われながら考えてみました*3

まず、特殊な演算ではありますが所詮は写像なので、結合則はどうやったって満たすと思います。では、何を注意しなきゃいけないかと言えば、(+10);(-9) ≠ (+1) と言うところです。これは、セミナー中にやった up;down が id にならない、と言う事実から来ています。

クライスリ圏とかラッピングとか

非常に面白かったです。まず、こうして見るとクライスリ圏の実例*4ってのはほんとに自然変換なしでもわかるくらいわかりやすいものだってこと。そして、ラッピング関手(?)の手法も、目から鱗でした。こんな面白いことができるとは。

クライスリ結合とモノイドの結合則の図示が一致したときは感動しました。美しいです。

*1:昼間に炎天下の下長時間ウォーキングしたせいで、軽い熱射病になったorz

*2:マクレーン本の初めに出てくるもの

*3:実はもう一つ考えてたことがあるのですが、それは次のエントリで。

*4:今回はモノイドから作ったモナドに限定の話。Haskellで出てくるモナドはほとんどがこれ。