Warum ist es nicht notwendig, den Aufzug zu verwenden, um eine Funktion in einer internen Monodentrafoumgebung auszuführen, außer für IO? Ich meine, wenn ich StateT über WriterT und WriterT über ReaderT habe, warum kann ich das tun?Monad Transformatoren und Hubfunktion
tell $ {- any code here for the Writer -}
foo <- asks {- This for the reader -}
and so on...
statt
lift $ tell $ {- code ... -}
...
Gibt es eine spezielle Erklärung oder es ist nur die Art, wie die Monade Transformers geschrieben wurden?
Schauen Sie sich [alle Instanzen 'WriterT' hat] (http://hackage.haskell.org/packages/archive/mtl/latest/doc/html/Control-Monad-Writer-Lazy.html#control.i : SchriftstellerT). – icktoofay
Beachten Sie, dass Sie, wenn Sie die 'transformers'-Bibliothek anstelle von' mtl' verwenden, alles explizit "heben" müssen. –