2

我试图让一些在 ghc 7.0.4 中工作的代码与 7.4.1 一起工作。

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

我很好奇一个有吸引力的工作会是什么。

4

1 回答 1

6

我的猜测是您的某些软件包的版本存在冲突(可能transformers)。当您尝试使用 0.3 版本时,Snap 可能是针对不同版本(可能是 0.2.2)构建的。结果,没有MonadIO您在范围内的实例(从 0.3 开始)。这只是一个猜测,但我已经看到同样的事情发生了很多次。

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

于 2012-06-01T09:04:32.130 回答