IO を除いて、内部モナド変換環境で関数を実行するためにリフトを使用する必要がないのはなぜですか? つまり、StateT が WriterT であり、WriterT が ReaderT である場合、なぜこれを行うことができるのでしょうか?
tell $ {- any code here for the Writer -}
foo <- asks {- This for the reader -}
and so on...
それ以外の
lift $ tell $ {- code ... -}
...
特別な説明はありますか、それともモナドトランスフォーマーが書かれた方法だけですか?