Prev: Continuation モナド TOC: 目次 Next: モナドの合成は難しい

イントロダクション


Part I ではモナドの概念を紹介し、Part II では標準の Haskell ライブラリ にあるいくつものよく使われ、有用なモナドについて理解できるようにしてきま した。これでもモナドをしっかりとした実用のものとするには十分ではありませ ん。 その理由は、現実の世界では、同時にふたつ以上のモナドの性質を合成し たような計算がほしくなることが多いからです。たとえば、状態のある非決定性 計算とか、継続と入出力を実行する計算とかです。一方の計算が厳密にもう一方 の部分集合になっているとき、部分計算が一方向で実行されないかぎり、その モナド計算を別々にすることができます。

多くの場合、この計算は隔離した状態では実行できません。ただし、今の場合、 必要とされているのは 2 つのモナドの機能を単一の計算に合成するモナドです。 新しい組合せが必要とされるたびに必要な性質をもつ新しいモナドにインスタン スを書くのは非効率ですし、御粗末です。代りに、標準のモナドを合成して、 必要な複合を生成する方法を開発するほうがよいでしょう。これからやろうと いうのは、まさに、モナド変換子 とよばれている技法です。

モナド変換子はこの Part III の主題です。これまでの例を再び取り挙げて説明し、 どのように、モナド変換子がより現実的な能力をモナドに与えるのかを見て いきましょう。これまでの例を追試して復習しておくとよいでしょう。


Prev: Continuation モナド TOC: 目次 Next: モナドの合成は難しい