正如标题所示,我正在寻找一个将 monad-transformers 与大量 Monad 堆栈结合使用的程序。
有人知道现实世界的例子吗?
最佳答案
一个很好的例子是 Haskeline - 其内部 InputCmdT
类型是深度为 6 的 monad 转换器堆栈(请参阅 here ):
type InputCmdT m = StateT Layout (UndoT (StateT HistLog (ReaderT (IORef KillRing)
(ReaderT Prefs (ReaderT (Settings m) m)))))
这实际上会产生奇怪的效果,例如对于至少一个 GHC 版本,将 System.Console.Haskeline.Emacs 中的一种类型签名吹散到超过 20.000 行...
关于haskell - 大型 Monad 堆栈的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12853675/