モナドに関する記事は世の中に沢山ありますが、モナドトランスフォーマーに関する記事はあまりないように思います。その概念が意味する所はHaskell初心者はもちろんのこと、他の言語使用者も知っておいて損は無いと思います。 モナドトランスフォーマーとは、「モナド変換子」とも言いますが、モナドと組み合わせる事で、新しいモナドを生み出すことが出来るデータ構造の事です。 例えばモナドIO1とトランスフォーマーStateT sを組み合わせると、StateT s IOというモナドになります。組み合わせた結果がモナドなので、これもさらに他のトランスフォーマーと組み合わせる事も出来ます。そこでReaderT rを組み合わせてみます。すると、ReaderT r (StateT s IO)というモナドになります。さらにEitherT eを組み合わせると、EitherT e (ReaderT r (StateT s