モニャドセミナー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の合成をやると、値は普通の演算が行われて、副作用は時系列で合成されるイメージが掴めると思います。