数学の一分野である圏論において、モナドとは、ある圏からそれ自身への関手Tと、結合性公理および単位性公理のいくつかの版を満たす2つの自然変換からなる三つ組である。同様に、モナドはある固定された圏の自己関手の圏におけるモノイドである(自己関手とは、ある圏をそれ自身に写像する 関手である)。

たとえば、関数が互いに随伴する場合、随伴関係によって決定される と合わせてモナドになります。


数学者ジョン・バエズによれば、モナドは少なくとも2つの方法で考えることができる。[ 1 ]
- 一般化されたモノイドとしてのモナド。これは、モナドが特定のカテゴリのモノイドであるため明らかである。
- 代数的な装置を研究するためのツールとしてのモナド。たとえば、グループは特定のモナドによって記述できます。
モナドは随伴関数対の理論で用いられ、半順序集合上の閉包演算子を任意のカテゴリに一般化します。モナドはデータ型理論、命令型プログラミング言語の表示的意味論、そして関数型プログラミング言語においても有用であり、可変状態を持たない言語でforループをシミュレートするなどの処理を可能にします。 「モナド(関数型プログラミング)」を参照してください。
モナドは、特に古い文献では、トリプル、トライアド、標準構成、基本構成とも呼ばれます。[ 2 ]
はじめにと定義
モナドとは、ある種の自己関数子です。例えば、と が随伴関数子のペアで、 がに左随伴関数子である場合、その合成はモナドです。と が互いに逆関数である場合、対応するモナドは恒等関数子です。一般に、随伴は同値ではなく、異なる性質の範疇を関連付けるものです。モナド理論は、随伴が「保持する」ものを捉える取り組みの一環として重要です。 の考察から同様に何が学べるかという理論のもう半分は、コモナドの双対理論で議論されています。 







この記事全体を通して、はカテゴリを表します。上のモナドは、 の自己関数と2つの自然変換(はの恒等関数を表す)および( はからへの関数を表す)から構成されます。これらは以下の条件(一貫性条件と呼ばれることもあります)を満たすために必要です。 










(自然変換として);ここでは、と は「水平合成」によって形成されます。


(自然変換として; ここではから への恒等変換を表します)。



これらの条件は、次の交換法則を使用して書き直すことができます。
表記法との説明については、自然変換に関する記事を参照するか、これらの表記法を使用しない可換図を以下で参照してください。 

最初の公理は、モノイドの二項演算を と考えると、モノイドにおける結合性に似ています。また、2番目の公理は、単位元( によって与えられると考える)の存在に似ています。実際、 上のモナドは、の自己関数をオブジェクトとし、それらの射をそれらの間の自然変換とする、カテゴリ のモノイドとして定義することもできます。モノイド構造は自己関数の合成によって誘導されます。 




冪集合モナド
冪集合モナドは、圏 上のモナドです。集合 に対して を の冪集合とし、関数に対してをの直像によって誘導される冪集合間の関数とします。任意の集合 に対して、写像 が存在し、これは任意の単集合に を割り当てます。関数 は 












集合の集合をその和集合にとります。これらのデータはモナドを記述します。
モナドの公理は、モノイド公理と形式的には類似しています。実際、モナドはモノイドオブジェクトの一種であり、自己関数 間のモノイドそのものであり、乗算は自己関数の合成によって与えられます。 
モナドの合成は、一般にモナドではない。例えば、二重冪集合関数はモナド構造を許容しない。[ 3 ]
コモナド
圏論的双対定義は、コモナド(またはコトリプル)の形式的な定義である。これは、ある圏のコモナドは、その反対の圏のモナドであるという観点から簡単に言える。したがって、これは からそれ自身への関手であり、定義中の矢印を反転させることで得られるコユニットとコマルチプレクシングの公理系を持つ。 



モナドとモノイドの関係は、コモナドとコモノイドの関係と同じです。すべての集合は一意にコモノイドであるため、コモノイドは抽象代数においてモノイドほど馴染みがありません。しかし、通常のテンソル積を持つベクトル空間のカテゴリにおけるコモノイドは重要であり、コ代数という名前で広く研究されています。
用語の歴史
モナドの概念は、 1958年にロジェ・ゴドマンによって「標準構成」という名前で考案されました。モナドは「二重標準構成」「三重」「モノイド」「トライアド」などとも呼ばれてきました。「モナド」という用語は、遅くとも1967年にジャン・ベナブーによって使用されています。[ 5 ] [ 6 ]
例
身元
圏上の恒等関数はモナドである。その乗算と単位元は、のオブジェクト上の恒等関数である。 

付加から生じるモナド
あらゆる付加物

C上のモナドを生成する。この非常に広く普及している構成は次のように動作する。自己関数子は合成関数である。

この自己関数はすぐにモナドであることがわかり、単位写像は随伴の単位写像から派生し、乗算写像は随伴の余単位写像を使用して構築されます。 

実際、任意のモナドは、アイレンバーグ・ムーアのカテゴリ(-代数のカテゴリ)を使用して、関数の明示的な付加として見つけることができます。[ 7 ]

二重の二重化
固定体kに対する二重双対化モナドは、

ここで、両方の関数は、ベクトル空間V をその双対ベクトル空間 に送ることで与えられます。付随するモナドは、ベクトル空間Vをその二重双対に送ります。このモナドについては、 Kock (1970)によってより一般的な議論がなされています。 

半順序集合上の閉包演算子
半順序集合 から生じるカテゴリ( の場合に限りから への単一の射を持つ)の場合、形式論ははるかに単純になります。つまり、随伴対はガロア接続であり、モナドは閉包演算子です。 



自由忘却付加詞
例えば、群の圏Grpから集合の圏Setへの忘却関手を とし、 集合の圏から群の圏への自由群関手を とします。すると、 は の左随伴となります。この場合、付随モナドは集合を受け取り、自由群 の基礎集合を返します。このモナドの単位写像は、写像によって与えられます。 







任意の集合を自然な方法で、長さ1の文字列として集合に含める。さらに、このモナドの乗算は写像である。 


「文字列の文字列」の自然な連結、つまり「平坦化」から成ります。これは2つの自然変換に相当します。自由群に関する前述の例は、普遍代数における代数多様体の意味で、あらゆるタイプの代数に一般化できます。したがって、そのようなタイプの代数はすべて、集合のカテゴリ上のモナドを生み出します。重要なのは、代数型はモナドから(アイレンバーグ・ムーア代数のカテゴリとして)復元できるため、モナドは普遍代数の一般化多様体と見なすこともできるということです。
随伴作用から生じるもう一つのモナドは、ベクトル空間の圏上の自己関数 のときである。これはベクトル空間をそのテンソル代数に写し、線型写像をそのテンソル積 に写す。すると、 をそのテンソル代数に埋め込むことに対応する自然変換、およびすべてのテンソル積 を単純に展開することによって得られるからへの写像に対応する自然変換が得られる。 





コーデンシティモナド
緩やかな条件下では、左随伴関数を許容しない関数もモナド、いわゆる共密度モナドを生成する。例えば、包含

は左随伴を許容しない。その共密度モナドは、任意の集合X をX上の超フィルタ集合へ送る集合上のモナドである。これと同様の例は、 Leinster (2013)で議論されている。
表示的意味論で使用されるモナド
命令型プログラミング言語の表示的意味論では、集合のカテゴリ上の次のモナドが使用され、関数型プログラミングでは類似の構造が使用されます。
多分モナド
多分モナドまたは部分モナドの自己関数子は分離点を追加します:


単位は、集合を に含めることによって与えられます。 



乗算により、 の要素が自身にマッピングされ、 の 2 つの互いに素な点が の1 つの点にマッピングされます。 


関数型プログラミングと表示的意味論の両方において、maybe モナドは部分的な計算、つまり失敗する可能性のある計算をモデル化します。
状態モナド
集合 が与えられたとき、状態モナドの自己関数子は各集合を関数の集合 に写像する。つまり、 および である。 




ユニットのコンポーネントは各要素を関数に マッピングします



乗算は関数を関数に マッピングします


より詳しく言うと、がおよび の ペアである場合、となります 。 




逆カリー化して となる。これを と に分解する と 、




すると、次のように 表現できる。

結合は次のように与えられます

関数型プログラミングと表示的意味論では、状態モナドは状態のある計算をモデル化します。
環境モナド
集合 が与えられたとき、リーダーモナドまたは環境モナドの自己関数子は、各集合を関数 の集合 に写像します。したがって、このモナドの自己関数子はまさにhom 関数子です。ユニット の成分 は、各要素を定数関数に写像します。 






乗算は2変数関数を その「対角成分」に写像する。言い換えれば、乗算は前置合成である。 



関数型プログラミングと表示的意味論では、環境モナドは読み取り専用データにアクセスする計算をモデル化します。
リストモナドとセットモナド
リストモナド、あるいは非決定性モナドは、集合Xを、 Xを要素とする有限列(つまりリスト)の集合に写像します。ユニットは、Xの要素xを、単項リスト [x] に写像します。乗算は、リストのリストを単一のリストに連結します。
関数型プログラミングでは、リストモナドは非決定性計算をモデル化するために使用されます。共変冪集合モナドは集合モナドとも呼ばれ、非決定性計算をモデル化するために使用されます。
モナドの代数
カテゴリ 上のモナドが与えられた場合、 -代数、すなわち、モナドの単項および乗法と両立する方法でによって作用されるの対象を考えるのは自然なことです。より正式には、 -代数と は、 の構造写像と呼ばれるの矢印を伴うの対象であり、図は 










 | | そして | |  |
通勤。
-代数の 射とは、図式




は可換である。 -代数は、アイレンバーグ–ムーアカテゴリと呼ばれるカテゴリを形成し、 と表記される。 

例
自由群モナド上の代数
例えば、上で議論した自由群モナドの場合、 -代数は、結合性および単位性条件の下で、自由群から へ向かって生成される写像を伴う集合である。このような構造は、 が群そのものである ということに等しい。




分配モナド上の代数
もう一つの例は、集合のカテゴリ上の分配モナド である。これは、有限台と関数の集合に、それらの和が となるような集合を代入することによって定義される。集合構築記法では、これは集合 となる。定義を調べると、分配モナド上の代数は凸集合、すなわちユークリッド空間における凸線形結合の振る舞いに似た公理に従う に対する演算を備えた集合 と同値であることが示される。[ 9 ]

![{\displaystyle f:X\to [0,1]}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)

![{\displaystyle {\mathcal {D}}(X)=\left\{f:X\to [0,1]:{\begin{matrix}\#{\text{supp}}(f)<+\infty \\\sum _{x\in X}f(x)=1\end{matrix}}\right\}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)

![{\displaystyle r\in [0,1]}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)

対称モナド上の代数
モナドのもう一つの有用な例としては、可換環 の - 加群のカテゴリにおける対称代数関数があります。これは、の対称テンソル冪の直和に- 加群を当てはめます。例えば、右側の - 代数は加群とみなされます。すると、このモナド上の代数は可換 - 代数です。また、交代テンソルと全テンソル関数のモナド上の代数は、反対称 -代数と自由- 代数を与えます。つまり、最初の環は -生成子上の自由反対称代数であり、2番目の環は -生成子上の自由代数です。 






![{\displaystyle {\text{Sym}}^{\bullet }(R^{\oplus n})\cong R[x_{1},\ldots ,x_{n}]}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)











E無限大環スペクトルにおける可換代数
可換-代数
に対しても同様の構成法があり[ 10 ] pg 113に可換-代数が与えられます。 が-加群の圏である場合、関数は-倍で与えられるモナドです。すると、このモナド上の代数の圏から、 可換 -代数の関連する圏が存在します。










モナドと付加
上で述べたように、任意の随伴はモナドを生じます。逆に、すべてのモナドは何らかの随伴、すなわち自由忘却随伴から生じます。

の左随伴項はオブジェクトXを自由T代数T ( X ) に送ります。しかし、モナドを生成する別個の随伴項が通常複数存在します。 を、となる随伴項をオブジェクトとし、 の矢印が 上の恒等写像である随伴項の射であるようなカテゴリとします。すると、上記の Eilenberg–Moore カテゴリを含む自由忘却随伴項は の終端オブジェクトになります。初期オブジェクトはKleisli カテゴリで、これは定義により自由T代数、つまりCのあるオブジェクトxに対するの形のT代数のみからなるの完全なサブカテゴリです。 







モナド付加
任意のモナドTに関連する随伴関数が与えられた場合、関手Gは次のように因数分解できる。 

すなわち、G ( Y ) は、 Dの任意のYに対してT代数構造を自然に備えることができます。最初の関数がDとアイレンバーグ–ムーアカテゴリとの間のカテゴリの同値をもたらす場合、その随伴はモナディック随伴と呼ばれます。[ 11 ]拡張により、関数がモナディック随伴を形成する左随伴Fを持つ場合、その関数はモナディックであると言われています。たとえば、前述のように、関連するモナド上の代数はグループであるため、グループとセットの間の自由–忘却随伴はモナディックです。一般に、随伴がモナディックであることを知っていれば、C内のオブジェクトとT作用からD内のオブジェクトを再構築できます。 


ベックのモナディシティ定理
ベックのモナディ性定理は、随伴がモナディックであるための必要十分条件を与える。この定理の簡略版は、 Gがモナディックであるための必要十分条件は、G が保存的である場合(またはG が同型写像を反映する、すなわち、 Dの射が同型写像となる場合と、 Gによるその像がCの同型写像となる場合とで同値である)かつCが を持ち、 G が共等化子を保存すること。
例えば、コンパクト・ハウスドルフ空間の圏から集合への忘却関手はモナド的である。しかし、すべての位相空間から集合への忘却関手は保存的ではない。なぜなら、非コンパクト空間や非ハウスドルフ空間間の連続全単射写像が存在し、それが同相写像にならないからである。したがって、この忘却関手はモナド的ではない。[ 12 ]コモナド的随伴作用を特徴付けるベックの定理の双対版は、トポス理論や代数幾何学における降下に関する話題 など、様々な分野で関連している。コモナド的随伴作用の最初の例は、随伴作用である。

可換環間の環準同型を求める。ベックの定理によれば、この随伴がコモナド的であることと、B がA -加群として忠実平坦であることは同値である。したがって、この随伴は、降下データ(すなわち、随伴によって与えられるコモナドの作用)を備えたB -加群をA -加群に降下させることを可能にする。結果として得られる忠実平坦降下理論は、代数幾何学において広く応用されている。 
用途
モナドは関数型プログラミングにおいて、逐次計算(場合によっては副作用を伴う)を表現するために使用されます。関数型プログラミングにおけるモナド、およびより数学的なウィキブックモジュールb:Haskell/圏論を参照してください。
モナドは、不純な関数型プログラミング言語や命令型プログラミング言語の表示的意味論で使用されます。[ 13 ] [ 14 ]
カテゴリカル論理では、閉包演算子、内部代数、およびそれらのS4モデルと直観主義論理との関係を介して、モナド-コモナド理論と様相論理の間に類似性が描かれています。
一般化
2-カテゴリ においてモナドを定義することが可能です。上記のモナドは のモナドです。 

参照
参考文献
- ^ 「nカテゴリーカフェ」。
- ^バー、マイケル; Wells、Charles (1985)、「Toposes、Triples and Theories」(PDF)、Grundlehren der mathematischen Wissenschaften、vol. 278、シュプリンガー版、82 および 120 ページ、ISBN 0-387-96115-1。
{{citation}}: CS1 maint: work parameter with ISBN (link) - ^ Klin; Salamanca (2018)、「反復共変べき集合はモナドではない」、電子計算機科学理論ノート、341 : 261– 276、doi : 10.1016/j.entcs.2018.11.013
- ^ジャン・ベナブー (1967)。「二カテゴリの紹介」。ベナブーにて、J.デイビス、R.ドルド、A.イズベル、J.マクレーン、S.オーバースト、U.ルース、J. -E. (編)。中西部カテゴリーセミナーのレポートです。数学の講義ノート。 Vol. 47. ベルリン、ハイデルベルク:シュプリンガー。ページ 1–77。土井: 10.1007/BFb0074299。ISBN 978-3-540-35545-8。
- ^ "RE: Monads" . Gmane . 2009年4月4日. 2015年3月26日時点のオリジナルよりアーカイブ。
- ^ Riehl, Emily . 「Category Theory in Context」(PDF) . p. 162. 2021年4月5日時点のオリジナルよりアーカイブ(PDF) 。
- ^ Świrszcz, T. (1974), 「モナディック関数と凸性」, Bull. Acad. Polon. Sci. Sér. Sci. Math. Astron. Phys. , 22 : 39– 42, MR 0390019 ジェイコブス、 バート(2010)、「凸性、双対性、および効果」、理論計算機科学、IFIP情報通信技術の進歩、第323巻、pp. 1– 19、doi:10.1007 / 978-3-642-15240-5_1、ISBN 978-3-642-15239-9
- ^ Basterra, M. (1999-12-15). 「可換S代数のアンドレ・キレンコホモロジー」 . Journal of Pure and Applied Algebra . 144 (2): 111– 143. doi : 10.1016/S0022-4049(98)00051-6 . ISSN 0022-4049 .
- ^ MacLane (1978)はより強い定義を使用しており、2 つのカテゴリは同等ではなく同型です。
- ^マクレーン (1978、§§VI.3、VI.9)
- ^ Wadler, Philip (1993). 「関数型プログラミングのためのモナド」 . Broy, Manfred (編).プログラム設計計算. NATO ASIシリーズ. 第118巻. ベルリン、ハイデルベルク: Springer. pp. 233– 264. doi : 10.1007/978-3-662-02880-3_8 . ISBN 978-3-662-02880-3。「モナドの概念はカテゴリー理論から生まれ、プログラミング言語の表示的意味論を構築するために Moggi によって応用されました。」
- ^ Mulry, Philip S. (1998-01-01). 「モナドの意味論」 .電子計算機科学理論ノート. ソフトウェアシステムの形式的基礎に関する米国・ブラジル合同ワークショップ. 14 : 275–286 . doi : 10.1016/S1571-0661(05)80241-5 . ISSN 1571-0661 .
さらに読む
外部リンク