Отсутствующие экземпляры для ResourceT в канале

Я получаю странную ошибку при попытке использовать ResourceT из канала 1.0.9.1. Мне не хватает экземпляров из документации. Например

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'

Это похоже на какую-то глупую ошибку с моей стороны, но я не могу понять. Где недостающие экземпляры?


person Petr    schedule 21.11.2013    source источник
comment
Обычной причиной этого является наличие нескольких установленных версий какого-либо пакета — либо mtl, либо трансформаторов, либо канала.   -  person Carl    schedule 21.11.2013
comment
У меня отлично работает, когда я указал conduit == 1.0.9.1, трансформаторы == 0.3.0.0 и mtl == 2.1.2, но @Carl верен, это, по-видимому, вызвано зависимостью от трансформаторов и mtl, что вызывает конфликты   -  person bheklilr    schedule 21.11.2013
comment
Возможно, Data.Conduit не всегда экспортировал экземпляры?   -  person J. Abrahamson    schedule 21.11.2013