为什么除了 IO 之外,在内部 monad 转换器环境中不需要使用 lift 来执行函数?我的意思是,如果我在 WriterT 上拥有 StateT,在 ReaderT 上拥有 WriterT,我为什么要这样做?
tell $ {- any code here for the Writer -}
foo <- asks {- This for the reader -}
and so on...
代替
lift $ tell $ {- code ... -}
...
是否有特殊解释,或者仅仅是 Monad Transformers 的编写方式?