モノイドからモナドを作る話は:
C = (C, , I) をモノイド圏として、C内のモノイドの圏を Monoid(C)、C上のモナドの圏を Monad(C) とすると、Monoid(C)→Monad(C) という関手があります。(monoidとmonadは綴が似ているので注意してください。)
ラックス・モノイド関手については、次の記事で書きました。
ラックス・モノイド関手に関する次の2つの定理は、ラックス・モノイド関手の定義からすぐに出ます。
- 2つのラックス・モノイド関手を結合すると、またラックス・モノイド関手になる。
- 単一対象と恒等射だけからなる自明圏からのラックス・モノイド関手は、モノイドと同じである。
2番めの定理は次の記事で述べています。
CとEをモノイド圏として、F:C→E をラックス・モノイド関手とします。先に挙げた2つの定理を組み合わせると:
- ラックス・モノイド関手Fは、Monoid(C)→Monoid(E) を誘導する。
Dを圏(モノイド圏である必要はない)とすると、自己関手と自然変換の圏 End(D) は、関手の結合を(非対称な)モノイド積としてモノイド圏となります。すぐ上の主張のEを End(D) に置き換えると:
- ラックス・モノイド関手 F:C→End(D) は、Monoid(C)→Monoid(End(D)) を誘導する。
Monoid(End(D)) = Monad(D) なので、
- ラックス・モノイド関手 F:C→End(D) は、Monoid(C)→Monad(D) を誘導する。
さらに、次の記事で述べたフォークロを考慮しましょう。
圏Dがモノイド圏C上の加群圏になっていると、その加群構造からラックス・モノイド関手 H:C→End(D) を構成できます*1。これから、Monoid(C)→Monad(D) を作れます。つまり、
モノイド圏Cは、自分自身の上の加群圏であることから、
- モノイド圏C内のモノイドは、C上のモナドを誘導する。
これが「モナド工場の秘密(オリジナル版)」でした。C内のモノイドが、異なる圏D上のモナドを誘導するという事実は、パワーアップしたモナド工場を与えることになります。
パワーアップ・モナド工場の実例をひとつ挙げましょう。
上記の記事で説明した状況で、コンパクト測度空間の圏CompMSはモノイド圏で、その反対圏CompMSopもモノイド圏です。うまいこと定義すると、バナッハ空間の圏Banはモノイド圏CompMSop上の加群圏になります。よって、“CompMSop内のモノイド=CompMS内のコモノイド”は、バナッハ空間の圏Ban上のモナドを定義します。CompMSには、対角射を余乗法とするコモノイドがたくさん(対象の数だけ)あります。モノイド圏ではないBan上のモナドを大量生産できました。[追記]CompMS側をちょっと細工する必要がありますね。でも、大筋はこれでいいかと。[/追記]
*1:実際は、Hは強モノイド関手になります。強モノイド関手はラックス・モノイド関手の特別なものなので、特に問題はありません。