Отсутствует экземпляр MonadIO для ConduitM?

Согласно документации существует MonadIO экземпляр для ConduitM, если у базовой монады есть MonadIO экземпляр (MonadIO m => MonadIO (ConduitM i o m)).

Почему тогда это:

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

потерпеть неудачу с этим:

Нет экземпляра для (MonadIO (ConduitM Int Data.Void.Void IO)), возникающего из-за использования 'liftIO' в первом аргументе '(.)', А именно 'liftIO' во втором аргументе '(>> =) ', а именно' (liftIO. print) 'Во втором аргументе' ($$) ', а именно' await >> = (liftIO. print) '

Что мне здесь не хватает?


Только что проверил, видимо у меня трансформаторы 0,22 и 0,3, может быть причина.


person Cubic    schedule 25.05.2014    source источник


Ответы (1)


Проблема заключалась в том, что канал зависит от трансформаторов-0.2.2.1 (по какой-то причине), и у меня были и это, и трансформаторы-0.3.0.0 - скрытие трансформаторов-0.3.0.0, исправили это на данный момент (если бы я использовал кабалу, это, вероятно, было бы тоже работал). По сути, это была та же проблема, что и здесь.

person Cubic    schedule 25.05.2014