管道中缺少ResourceT的实例

时间:2013-11-21 12:50:02

标签: haskell instance conduit

尝试使用管道1.0.9.1中的ResourceT时,我遇到了一个奇怪的错误。我缺少文档中的实例。例如

import Control.Monad
import Control.Monad.Trans
import Control.Monad.IO.Class
import Data.Conduit

test = runResourceT (lift $ print "Hello world")

因使用MonadTrans ResourceT 而导致没有实例(lift)而失败,尽管文档中有很多实例,包括MonadTrans ResourceT。检查REPL确认问题:

Prelude> :m Data.Conduit
Prelude Data.Conduit> :i ResourceT
newtype ResourceT m a
  = Control.Monad.Trans.Resource.Internal.ResourceT ...
-- Defined in `Control.Monad.Trans.Resource.Internal'
instance Monad m => Monad (ResourceT m)
  -- Defined in `Control.Monad.Trans.Resource.Internal'
instance Functor m => Functor (ResourceT m)
  -- Defined in `Control.Monad.Trans.Resource.Internal'
instance MonadThrow m => MonadThrow (ResourceT m)
  -- Defined in `Control.Monad.Trans.Resource.Internal'
instance MonadBaseControl b m => MonadBaseControl b (ResourceT m)
  -- Defined in `Control.Monad.Trans.Resource.Internal'

这似乎是我身上的一些愚蠢的错误,但我无法弄清楚。丢失的实例在哪里?

0 个答案:

没有答案