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

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

モニャドセミナー3 お疲れ様でした

モニャドセミナー3に行ってきました。

破壊的代入と単一代入をモノイドと見なせるってのは意外な発見でした。こういう例は非常に面白いです。

最後に一気に解説があった"スタンピング"については、CATEGORY THEORY FOR COMPUTING SCIENCEのP365に Representation triple と言う名前で出てました。このモナドを念のため関手と自然変換を知ってるものとして記述すると、Mをモノイドして、

  • Setsの自己関手T
    • Tobj(S) = M × S
    • Tmor(f) = M × f
      • (M×f)(m, x) = (m, f(x))
  • 恒等関手からTへの自然変換η
  • TTからTへの自然変換μ

となります*2。ηとμが今日の説明のP:{*}→Aと△:A×A→Aとなります(Aがモノイド)。自然変換として定義すると一見違うように見えますが、引数xを無視して見てみると同じ形をしていることがわかると思います。

これらを使って今日説明があったようなKleisliの合成をやると、値は普通の演算が行われて、副作用は時系列で合成されるイメージが掴めると思います。

おまけ

ついでに、モナドの可換図でよく出てくる TTTからTT への二つの自然変換 Tμ と μT も見ておきます。

これで例の可換図が可換になることも確かめられますね!

*1:圏がSetsなんで

*2:本からコピペ。