haskell - 大型 Monad 堆栈的示例

标签 haskell monads monad-transformers

正如标题所示,我正在寻找一个将 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/

相关文章:

haskell - 如何在 Elm 中结合结果和状态?

haskell - 为什么电梯的返回值不被限制为单子(monad)?

haskell - 提升的数据类型和类实例

haskell - 违反适用仿函数法

haskell - 为什么 Haskell 使用 -> 而不是 =?

function - Haskell IO传递给另一个功能

haskell - 如何将 Haskell Traversable 转换为 Vector?

haskell - 这种自由(更自由?)单子(monad)的构造有效吗?

monads - 为什么要为 monad 定义单位自然变换——这不是 monad 是内仿函数的定义所暗示的吗?

haskell - 如何为具有幻像类型变量的新类型定义 MonadUnliftIO 实例?