このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

メイヤー代数と一般化クライスリ構成

直積と直和を持つ圏Cで、対象Aを固定して、λX∈Obj(C).(A×X)、λf∈Mor(C).(A×f) とするとCの自己関手を定義できます。A×f と書いたときのAはidAの意味だとしています。対象も射も表す変数xを導入して、λx∈C.(A×x) とすると簡略に書けます。

M = (M, m, e) が(記号の乱用を許して)C内のモノイドのとき、F := λx∈C.(M×x) とすると、Fは CC という自己関手になります。Mの乗法と単位を利用して自然変換 μ、η を適切に定義すれば F := (F, μ, η) は(ここでも記号の乱用をして)モナドになります。同様に、対象Eに対して G := λx∈C.(x + E) として定義した関手Gも直和の余対角と終対象への唯一射を使ってコモナド G = (G, δ, ε) を定義します。

上の構成で、定数としていたMとEを変数だと考えて、モナドを F[M]、コモナドを G[E] と書きましょう。モナドTによるクライスリ構成を Kl(C, T) と書くことにして、F[M] := Kl(C, F[M]) と G[E] := CoKl(C, G[E]) (コッチは余クライスリ構成)とします。F[-] と G[-] はそれぞれ、Monoid(C) と C をベースとするインデックス付き圏(共変・反変は気にしない)を定義します。

F[-]、G[-] の順次適用と同時適用の概念がうまく定義できて、それらの結果は(圏同値の意味で)一致するだろう、というハナシが「インデックス付き圏のフビニ/グロタンディーク同値」で述べたことです。

メイヤー代数は、モノイドとコモノドの構造を持つものです。単純にモノイドとコモノドのペアでは表現できませんが、まー似たようなものです。モノイドとコモノド(余モノイド)のペアに、クライスリ構成と余クライスリ構成を施すのと似たような手順で、メイヤー代数によるクライスリ構成(の一般化)が出来るだろう、というのが僕の楽観的期待です。

実装のレベルで、メイヤーのCommand-Query分離の原則を守ってシステムを作る行為が、メイヤー代数による一般化クライスリ構成を遂行しちゃっているように思えるのです。良いプラクティスとみなされているメイヤーの原理と、既に無意識に行われていることに対して、意識的なハッキリとした定式化を与えたいなー、ということです。細部まで確認するのが手間で、なかなか進まないのですがね(苦笑)。

[追記]モノイドからモノイダル・スタンピングモナドを構成することは、モノイド圏C内のモノイドの圏 Monoid(C) を、C上の自己関手(と自然変換)の圏 End(C) に埋め込むことになります。同様に、C内のなんらかの代数系の圏 SomeAlg(C) を、厳密非対称モノイド圏 End(C) に埋め込むような操作と、それを使ったCの拡張が問題になるのだと思います。

モナドとテンソル強度の楽しいお絵描き」で書いたようなことが関係しそうなんですけど … [/追記]