Snap Monad,LiftIO和ghc 7.4.1

zma*_*ian 2 haskell haskell-snap-framework

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

在我看来,从Snap moand内部访问IO的旧方式不再是类型检查.

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

a :: Snap ()
a = liftIO fireTheMissiles
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

我很好奇周围有什么吸引人的工作.

Mic*_*man 6

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

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