如何在Haskell项目中覆盖上限限制?

3

我希望能够使用kind equality,目前似乎只在GHC head中存在。

我已经进行了GHC的系统安装,并在我的项目中添加了一个snapshot.yaml文件。

resolver: nightly-2016-12-31
compiler: ghc-8.1.20170103

并相应更新了 stack.yaml 文件。

resolver:
  name: snapshot
  location: snapshot.yaml

我可以使用stack path来选择正确的编译器。
当我构建我的项目时,现在有以下结果:
In the dependencies for array-0.5.1.1:
    base-4.10.0.0 must match >=4.5 && <4.10 (latest applicable is 4.9.0.0)
needed due to bookkeeper-0.2.4 -> array-0.5.1.1

我该如何在我的项目中覆盖 array-0.5.1.1 声明的上限,这个上限可能并不是实际所需的?


尝试使用 --allow-newer - sjakobi
1
哦,显然那不是一个CLI选项。不过你可以在stack.yaml中设置它。 - sjakobi
1个回答

2
您的主要问题是nightly-2016-12-31快照使用GHC 8.0.1和base 4.9.0.0,因此与您安装的GHC 8.1不兼容。应该足够将解析器设置为ghc-8.1.20170103,这样就不会使用任何快照了。(还有一个{{link3:system-ghc}}选项;但考虑到Stack已经使用了正确的编译器,我想它不必开启。)如果您需要没有捆绑在GHC中的包,您将不得不将它们添加到stack.yaml中的extra-deps中(如果您已经有一个指定依赖关系的.cabal文件,则可以使用stack solver --update-config自动填充)。

谢谢你的建议。如果我将解析器设置为ghc-8.1.20170103,求解器尝试找不到计划,因为它抱怨所有指定此基本上限的库。真让人沮丧。 - nicolas
哦,好的,求解器忽略了在 stack.yaml 中设置的“allow-newer”标志。只是尝试构建并添加所需的软件包,结果会导致一些编译问题。 - nicolas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接