なぜIOを除く内部モナドトランス環境で機能を実行するためにリフトを使用する必要はありませんか?つまり、私はStateT over WriterTとWriterT over ReaderTを持っていれば、なぜこれを行うことができますか?モナドトランスフォーマーとリフト機能
tell $ {- any code here for the Writer -}
foo <- asks {- This for the reader -}
and so on...
代わりの
lift $ tell $ {- code ... -}
...
特別な説明がありますか、それはモナド変圧器が書かれた唯一の方法ですか?
[すべてのインスタンス 'WriterT' has](http://hackage.haskell.org/packages/archive/mtl/latest/doc/html/Control-Monad-Writer-Lazy.html#control.i)を見てください。 :WriterT)。 – icktoofay
'mtl'の代わりに' transformers'ライブラリを使用すると、明示的にすべてをリフトする必要があることに注意してください。 –