【发布时间】:2012-03-06 13:23:27
【问题描述】:
考虑一些 monad 转换器堆栈,比如说
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
...
newtype J = J { runJ :: ErrorT Foo (StateT Bar IO) a } deriving (Applicative, Functor, etc)
还有J中的一些函数:
peekNextQuux :: J Quux
peekNextQuux = ...
withJ :: J a -> IO (Either Foo a)
withJ = ...
然后我发现自己在J 上下文中。我会写
f = withJ $ peekNextQuux >>= liftIO . print
现在我想在 J 上下文中的单独线程内查看和打印 quuxes
g = withJ . liftIO . forkIO . forever $ peekNextQuux >>= liftIO . print
这显然行不通。我想有什么办法可以解决这么简单的问题,就是想不通。
【问题讨论】:
标签: haskell monad-transformers