Почему нет необходимости использовать лифт для выполнения функции во внутренней среде трансформатора монады, кроме IO? Я имею в виду, если у меня есть StateT над WriterT и WriterT над ReaderT, почему я могу это сделать?Monad Трансформаторы и функция подъема
tell $ {- any code here for the Writer -}
foo <- asks {- This for the reader -}
and so on...
вместо
lift $ tell $ {- code ... -}
...
Есть ли специальное объяснение или это только способ монады Трансформаторы были написаны?
Посмотрите на [все экземпляры 'WriterT'] (http://hackage.haskell.org/packages/archive/mtl/latest/doc/html/Control-Monad-Writer-Lazy.html#control.i : WriterT). – icktoofay
Обратите внимание, что если вы используете библиотеку 'transformers' вместо' mtl', вам придется явно «поднять» все. –