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

在我看来,从Snap模块内部访问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)


我很好奇周围会发生什么有吸引力的工作。

最佳答案

我的猜测是您的某些软件包版本冲突(可能是transformers)。当您尝试使用版本0.3时,可能会针对其他版本(也许是0.2.2)构建了Snap。结果,您的作用域中没有MonadIO实例(从0.3开始)。这只是一个猜测,但是我已经看到同一件事发生了很多次。

避免这种情况的最简单方法之一就是使代码无效化。如果您尝试使用同一软件包的不同版本,cabal会警告您。

关于haskell - Snap Monad,LiftIO和ghc 7.4.1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10843547/

10-12 22:34