我正在尝试使用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/