Snap Monad,LiftIO和ghc 7.4.1

时间:2012-06-01 02:05:31

标签: haskell haskell-snap-framework

我正在尝试使用ghc 7.0.4中的一些代码与7.4.1一起工作。

在我看来,从Snap moand内部访问IO的旧方式不再是类型攻击。

在ghc 7.0.4中,记录的访问IO编译方式。

a :: Snap ()
a = liftIO fireTheMissiles

http://hackage.haskell.org/packages/archive/snap-core/0.8.1/doc/html/Snap-Core.html

在GHC 7.4.1中,

No instance for (MonadIO Snap)
  arising from a use of `liftIO'
Possible fix: add an instance declaration for (MonadIO Snap)

我很好奇这是一个有吸引力的工作。

1 个答案:

答案 0 :(得分:6)

我的猜测是你有一些包的冲突版本(可能是transformers)。当您尝试使用0.3版时,Snap可能针对不同的版本(可能是0.2.2)构建。因此,您在范围内({0.3})没有MonadIO的实例。这只是一个猜测,但我已经看过同样的事情发生了很多次。

避免这种情况的最简单方法之一是虚拟化您的代码。如果您尝试使用相同包装的不同版本,cabal会发出警告。