6.4 モナド
Haskellを学んだときに、多くの人がこれは何だろうと思ったのが、モナドだと思う。恐らくは入出力のところで出会ったことと思うが、なんでそのまま出力されないのと思ったことだろう。
話はそれるが、昨年は、九州、東北、北海道にある縄文時代や弥生時代の遺跡を訪ね、その時代の文化に浸って楽しく過ごした。この時代の人々は、文字を有していなかったので、彼らがどのように考えていたのかを伝えてくれない。しかし、縄文時代の人々と同じように、狩猟採集生活を過ごした人々は、少し前まで、アフリカのカラハリ砂漠、南太平洋のニューギニア、南米のアマゾン奥地、そしてオーストラリアで生活をしていた。人類学者の人たちが、これらの人々のことを調べているので、縄文時代の人々の考え方を知る助けになるのではと思い、最近出版された2冊の本を読んでみた。
ジェイムス・スーズマン著『本当の豊かさはブッシュマンが知っている』と奥野克己著『ありがとうもごめんなさいもいらない森の民と暮らして人類学者が考えたこと』が、それである。こんなにも考え方が違うのかと驚かされるのだが、その中で時間に対する捉え方が全く異なる。我々は、過去、現在、未来という時を意識しているが、彼らには現在しかない。過去や未来があるから生き方が難しくなるので、現在だけしかないとするととても単純になる。
モナドの世界はまさに、現代人の世界である。入出力は、時間軸の中での前と後の関係を伴っている。これに対して、モナドがないHaskellの世界には時間的な前後の関係はない。そこではどの関数も、同じ入力に対して同じ出力を与える。時間によって出力が変わることはない。しかしモナドの世界では、過去に何があったかによって同じ入力であったとしても、異なる出力を与えることがある。狩猟採集民の人々と現代人の間の橋渡しをしてくれるのがモナドと考えると、時空間を越えてコミュニケーションをしているようで楽しくなる。今回は、そのようなモナドをストリング・ダイアグラムによりビジュアルに表現しよう。
モナドは、圏\(\mathcal{M}\)において、自己関手\(T: \mathcal{M} \rightarrow \mathcal{M}\)と自然変換
\begin{eqnarray}
η: I_\mathcal{M} \rightarrow T \\
μ: T \circ T \rightarrow T
\end{eqnarray}
を有し、以下の条件を満たすものである。
\begin{eqnarray}
μ\circ Tη &=& μ\circ ηT = I_T \\
μ\circ Tμ &=& μ\circ μT
\end{eqnarray}
条件を可換図式で表すと図18のようになる。
自然変換\(η,μ\)はpasting diagramで表すと図19となる。
これをストリング・ダイアグラムに変えると図20を得る。ビジュアルにすると天井からぶらさっがっている線に傘が接続されているものと、何も接続されていないものとなり、覚えやす。
次は可換図式だ。例によってpasting diagramを描いてみよう。図21に示すように二つに分かれ、上の図は可換図式の左側を、下の図は可換図式の右側の部分を表している。また、可換図式の左側で、\(Tη:T \rightarrow T^2\)の部分は\(Tη:T I_\mathcal{M} \rightarrow T^2\)としたあと、pasting diagramとした。右側の\(ηT:T \rightarrow T^2\)も同じである。
それではストリング・ダイアグラムで表してみよう。まずは上の部分で、図22になる。Pasting diagramは複雑だったが、ストリングスはすっきりしている。
下の図をストリングで表すと図23となる。前の図とは左右対称なのが分かる。
もう一つの可換図式をpasting diagramで表すと図24である。
これをストリング・ダイアグラムで表すと図25のようにかなりすっきりし、左右を入れ替えても同じということがビジュアルにはっきりする。