state モナドS -> (A, S)
と costate comonadを組み合わせるには(E->A, E)
?
両方の明白な組み合わせを試してみましS -> ((E->A, E), S)
たが、どちらの場合も、組み合わせの操作 ( 、、... など)(E->S->(A, S), E)
を定義する方法がわかりません。return
extract
state モナドS -> (A, S)
と costate comonadを組み合わせるには(E->A, E)
?
両方の明白な組み合わせを試してみましS -> ((E->A, E), S)
たが、どちらの場合も、組み合わせの操作 ( 、、... など)(E->S->(A, S), E)
を定義する方法がわかりません。return
extract
他の答えが示すように、両方の組み合わせS -> ((E->A, E), S)
と(E->S->(A, S), E)
Monad と Comonad のインスタンスが同時に存在します。実際、Monad/Comonad インスタンスを与えることは、resp にモノイド構造を与えることと同じです。そのポイント∀rr->f(r) またはそのコポイント ∀rf (r)->r、少なくとも古典的な非構成的な意味で (建設的な答えはわかりません)。この事実は、点と余点が自明でない場合、実際にファンクター f がモナドとコモナドの両方になる可能性が非常に高いことを示唆しています。
しかし、本当の問題は、そのように構築された Monad/Comonad インスタンスが自然な計算/カテゴリの意味を持っているかどうかです。この特定のケースでは、計算上のニーズに合った方法でそれらを構成する方法について先験的な知識を持っていないように見えるため、「いいえ」と言い ます。
2 つの (コ) モナドを構成する標準的なカテゴリカルな方法は、付加物を使用することです。あなたの状況を要約させてください:
Fₑ Fₛ
--> -->
Hask ⊣ Hask ⊣ Hask
<-- <--
Gₑ Gₛ
Fₜ(a) = (a,t)
Gₜ(a) = (t->a)
Fₜ ⊣ Gₜ の証明:
Fₜ(x) -> y ≃
(x,t) -> y ≃
x -> (t->y) ≃
x -> Gₜ(y)
これで、状態モナド (s->(a,s)) ≃ (s->a,s->s) が合成 GₛFₛ であり、コステート コモンが FₑGₑ であることがわかります。この補遺は、Hask が (共) 状態 (共) 代数のモデルとして解釈できることを示しています。
さて、「付属物が構成します。」例えば、
FₛFₑ(x) -> y ≃
Fₑ(x) -> Gₛ(y) ≃
x -> GₑGₛ(y)
だから FₛFₑ ⊣ GₑGₛ. これにより、モナドとコモンドのペアが得られます。つまり、
T(a) = GₑGₛFₛFₑ(a)
= GₑGₛFₛ(a,e)
= GₑGₛ(a,e,s)
= Gₑ(s->(a,e,s))
= e->s->(a,e,s)
= ((e,s)->a, (e,s)->(e,s))
G(a) = FₛFₑGₑGₛ(a)
= FₛFₑGₑ(s->a)
= FₛFₑ(e->s->a)
= Fₛ(e->s->a,e)
= (e->s->a,e,s)
= ((e,s)->a, (e,s))
T は単に状態 (e,s) を持つ状態モナドであり、G はコステート (e,s) を持つコステート コモンであるため、これらは非常に自然な意味を持ちます。
付属物を構成することは、自然で頻繁に行われる数学的操作です。たとえば、 トポイ ('タイプ レベル' で複雑な (自由でない) 構造を許容する一種のデカルト閉カテゴリ) 間の幾何学的射は、随伴のペアとして定義され、その左随伴が完全なままであることのみを必要とします(つまり、有限の限界)。これらの topoi が位相空間上の層である場合、付属物を構成することは、(一意の) 連続的な塩基変化マップを (反対方向に) 構成することに単純に対応し、非常に自然な意味を持ちます。
一方、モナド/コモナドを直接構成することは、数学では非常にまれな方法のようです。これは、(コ)モナドがモデルとしてではなく、(コ)代数理論の担い手と見なされることが多いためです。この解釈では、対応する付属物はモデルであり、モナドではありません。問題は、2 つの理論を構成するには別の理論、つまりそれらを構成する方法に関する理論が必要になることです。たとえば、モノイドの 2 つの理論を構成することを想像してください。そうすれば、少なくとも 2 つの新しい理論、つまり、リストのリストの理論、または 2 種類の 2 項演算が分散する環のような代数が得られる可能性があります。どちらもアプリオリではない他のものより良い/より自然。これが「モナドは構成しない」という意味です。合成がモナドになれないとは言っていませんが、それらを合成するには別の理論が必要になると言っています。
対照的に、付属物を構成すると、自然に別の付属物が生じます。これは、そうすることによって、与えられた 2 つの理論を構成する規則を暗黙のうちに指定しているためです。したがって、合成随伴のモナドを取得することで、合成の規則も指定する理論が得られます。