如标题所示,我正在寻找一个程序,该程序将monad-transformers与大量Monads结合使用。

有人知道真实的例子吗?

最佳答案

一个很好的例子是Haskeline-其内部InputCmdT类型是深度为6的monad转换器堆栈(请参阅here):

type InputCmdT m = StateT Layout (UndoT (StateT HistLog (ReaderT (IORef KillRing)
                (ReaderT Prefs (ReaderT (Settings m) m)))))

实际上可能会产生奇怪的影响,例如在System.Console.Haskeline.Emacs中吹至少一种GHC版本的多达20.000行的一种类型签名...

07-26 00:59