0

根据文档MonadIO,如果底层 Monad 有一个MonadIO实例 ( MonadIO m => MonadIO (ConduitM i o m)) ,则有一个ConduitM 实例。

那为什么会这样:

yield (1::Int) $$ await >>= (liftIO.print) :: IO ()

失败:

(MonadIO (ConduitM Int Data.Void.Void IO)) 没有使用 'liftIO' 产生的实例 在 '(.)' 的第一个参数中,即 'liftIO' 在 '(>>=) 的第二个参数中',即'(liftIO . print)' 在'($$)'的第二个参数中,即'await >>= (liftIO . print)'</p>

我在这里想念什么?


刚刚检查过,显然我有变压器 0.22 和变压器 0.3,这可能是原因。

4

1 回答 1

2

问题是管道依赖于transformers-0.2.2.1(出于某种原因),我同时拥有它和transformers-0.3.0.0 - 现在隐藏transformers-0.3.0.0 修复了这个(如果我使用了cabal,它可能会也工作过)。实际上,这与此处的问题相同。

于 2014-05-25T11:02:01.763 回答