翻訳の公開は本人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。訳これはモナドのチュートリアルではないし、ここには数学用語も出てこない。本稿は、既にモナドを一応使えるぐらいには習った人を対象とする。視覚化することで、何のために何をやっているかが明らかになるはずだ。関数モナドに対する直感を得る一つの方法として関数からモナドへの抽象化をたどるというものがある。関数が何をやっているのかを簡単な絵で表してみよう。中で何が起こっているかは誰も知らないが、普通は何らかの計算が行われる。僕の個人的なプログラミングの経験から全ての関数はなんらかの処理を実行しなくてはいけないと思っていたこともあったが、それは関数を実装する方法の一つにすぎない。抽象的には、関数は値が別の値になる通り道だ。行く事だけが全てじゃないからだ。中身の値」に関数を適用することだからだ。リストがこれにあたる。整数のリストがあるとき、関数をリスト自身じゃなくてリストの中の整数に適用したいときがある。実際に欲しいものへの「コンテキスト」を表すために以下の図ではブラケットを用いた。これらのブラケットはリストではなく、「コンテキスト」を表す:ここでは前と同じ関数を使っている。常に物理的なものだという誤解をしないようにしてほしい。そのものが関数であることも可能で、その場合は「コンテキスト」はコンテナではなく計算をモデル化する。考えれば一番いいのかはそれが何を実装しているのかに依存する。いじっただけのものだ。インターネットだけを見ていると数学者だけが理解する何か高度に特殊化した何かだと思うけもしれない。理解できればモナドとその栄華の全てを理解する一歩手前だということだ。