我正在尝试使用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)
我很好奇这是一个有吸引力的工作。
答案 0 :(得分:6)
我的猜测是你有一些包的冲突版本(可能是transformers
)。当您尝试使用0.3版时,Snap可能针对不同的版本(可能是0.2.2)构建。因此,您在范围内({0.3})没有MonadIO
的实例。这只是一个猜测,但我已经看过同样的事情发生了很多次。
避免这种情况的最简单方法之一是虚拟化您的代码。如果您尝试使用相同包装的不同版本,cabal会发出警告。