cabal的"警告:回归到GHC <7的自上而下求解器".意思?

Pet*_*lák 3 haskell ghc cabal cabal-install

在GHC6上使用cabal进行构建时,它会发出警告:

Warning: Falling back to topdown solver for GHC < 7.
Run Code Online (Sandbox Code Playgroud)

什么是自上而下的解决方案,警告的含义是什么?它对我有什么影响?

kos*_*kus 7

对于较旧的GHC版本,新的模块化解算器无法正常工作,特别是对于ghc-6.12.X.本系列中有一个特例,它base-3依赖于base-4并通过从较新版本重新导出功能来提供兼容性层.

Hackage上的其他任何地方都没有使用这种特殊情况,我从未认为在新的解算器中实现它是值得的.

由于两个解算器仍由提供cabal-install,它只是默认为较旧的GHC版本的旧"topdown"解算器,并默认为新的GHC版本选择较新的"模块化"解算器.

如果您尝试选择模块化求解器ghc-6.12.X,只要所有库都支持,它仍应该能够找到解决方案base-4.但base-3由于自我依赖性,总会被视为不可用.


Mik*_*kov 6

只是忽略它.

该消息意味着依赖项求解器组件决定回退到旧算法,因为您使用GHC <7.有关依赖项求解器的作用的更多信息,请参阅AndresLöh和Duncan Coutts的这些幻灯片.他们还解释了新(模块化)和旧(自上而下)求解器之间的区别.

(如果你真的想,你可以cabal install通过运行强制使用新的求解器cabal install --solver=modular.)