みどりねこ日記

よくわからないけど、頑張りますよ。

Haskellのモナド2(1)

前回まではモナドをコンテナの表現方法として扱って来ました。すなわち、モナドを構造的に見てきたということです。しかし「なぜ」モナドを使うのかは完全には説明していません。なんといっても、モナドの構造はとてつもなくシンプルですので、そもそもなぜ使うかなんてこだわる必要があるのでしょうか?

Haskellにおいてモナドを使う本当の理由は、それぞれのモナドが「違う形の計算」を表すことができるからです。これから先しばらく、「計算」というものを単純な関数呼び出しのこととします。つまり、私たちは関数の結果を計算しているわけです。この意味については追々触れるとして、まずは基本的なモナディック演算子について再考してみることにします。

>>=

(>>=)演算子はふたつのモナディックな計算を連結させるために使われます。これを用いると、連結された計算が実行に移された時、最初の計算が実行され、その結果が2つめの計算に渡され、それを利用した計算などを実行することができます。

return

return x という式は、計算の観点から見ると、ただxを返すという単純な計算です。ただし、xをその文脈の計算にとってのxとして返します。この文の意味はStateモナドについて学べばもっとしっかり分かります。