WSL:Cabal 无法解决依赖关系。容器,二进制

WSL: Cabal could not resolve dependencies. containers, binary

我在使用 haskell 和 cabal 方面还很陌生,我正在尝试使用 cabal install --lib plot 安装包 haskell package plot 并且我得到了这个

Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] trying: binary-0.8.8.0/installed-0.8.8.0 (user goal)
[__1] next goal: containers (user goal)
[__1] rejecting: containers-0.6.4.1 (conflict: binary =>
containers==0.6.2.1/installed-0.6.2.1)
[__1] rejecting: containers-0.6.3.1, containers-0.6.2.1/installed-0.6.2.1,
containers-0.6.2.1, containers-0.6.1.1, containers-0.6.0.1,
containers-0.5.11.0, containers-0.5.10.2, containers-0.5.10.1,
containers-0.5.9.2, containers-0.5.8.2, containers-0.5.7.1,
containers-0.5.7.0, containers-0.5.6.3, containers-0.5.6.2,
containers-0.5.6.1, containers-0.5.6.0, containers-0.5.5.1,
containers-0.5.5.0, containers-0.5.4.0, containers-0.5.3.1,
containers-0.5.3.0, containers-0.5.2.1, containers-0.5.2.0,
containers-0.5.1.0, containers-0.5.0.0, containers-0.4.2.1,
containers-0.4.2.0, containers-0.4.1.0, containers-0.4.0.0,
containers-0.3.0.0, containers-0.2.0.1, containers-0.2.0.0,
containers-0.1.0.1, containers-0.1.0.0, containers-0.5.9.1, containers-0.5.8.1
(constraint from user target requires ==0.6.4.1)
[__1] fail (backjumping, conflict set: binary, containers)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: binary, containers, ghc

我尝试分别安装容器和二进制文件,但我遇到了类似的错误。

这就是当您使用 cabal install --lib 而不了解它的确切作用时会发生的情况。简而言之,它不适合拥有一个不断更新的全局库集。真的只能用一次。要再次使用它,您必须删除它创建的环境文件,并将它与您希望在单个 cabal 调用中可用的库的完整列表一起使用。老实说,这很痛苦,在几乎所有情况下,使用 cabal 文件都是更好的工作方式。

创建一个新目录,运行 cabal init 在里面,将你需要的包添加到生成的 cabal 文件中,将你的代码放在生成的 Main.hs 中,试验 cabal repl、运行 和 cabal exec。它不必比这更复杂,并且您可以通过彼此独立地固定包版本来避免给自己带来额外的问题。