【发布时间】:2012-07-27 19:17:21
【问题描述】:
我正在深入研究 Yesod 的 monad,并且遇到了 MonadBaseControl。
我看了一下hackage doc,然后迷路了。有人能告诉我它试图解决的问题吗?
【问题讨论】:
-
它实际上来自monad-control,那里的包描述说“这个包定义了类型类 MonadBaseControl,它是 MonadBase 的一个子集,可以从 IO 或任何其他基础中提取诸如 catch 之类的通用控制操作单子。”不幸的是,它没有告诉我它要解决哪个问题。
-
看看 [lifted-base](hackage.haskell.org/package/lifted-base)。它提供了许多基于
IO的标准函数的提升版本。例如,使用MonadBaseControl,您可以编写一段代码,在基于IO的复杂monad 堆栈中运行,并在该堆栈中调用fork,将monad 具有的任何上下文也传输到分叉线程中。 -
一位同事写了一个非常好的介绍和演练:lexi-lambda.github.io/blog/2019/09/07/…