SO是一场狗屎秀。感谢您的搭车。
你的代码适用于我,也适用于 GHC 7.8.3。不过,请仔细查看错误消息:
Test.hs:22:10:
Could not deduce (mtl-2.1.3.1:Control.Monad.State.Class.MonadState
st' (Engine st' m))
像
mtl-2.1.3.1
这样的显式包标识符通常不包含在错误中。当它们是时,意味着GHC已经加载了两个不同版本的包,具有相同的名称但不同的类型和类。在这种情况下,一个可能由 lens
使用,另一个则直接由您的模块使用。
Cabal 沙箱是避免这种情况的一种方法(它们确保包版本一致)。