首页 > 解决方案 > 我可以以某种方式使用比包指定的基础版本更高的包吗?

问题描述

我对 Haskell 堆栈很陌生,所以我可能会误解这里的工作方式,但我遇到了一个问题,我已经看过几次了,我想知道我是否走错了路。

简而言之,我有时想使用一个版本规范的包,该包的版本上限低于base我的 Stack 解析器所包含的版本。

例如,我不能将lts-12.14 解析器与 一起使用PSQueue-1.1,因为前者包含base-4.11.1而后者需要base >=4 && <4.11.

我发现解决这个问题的两种方法是

这两种感觉都不是最理想的,特别是因为我可能想使用具有非重叠范围的包(例如 one>=3 && <4.11和 one >=4.11)。我意识到一起使用这样的组合可能会失败,特别是如果它们被锁定在不同的主要版本上base(假设base使用 semver),但到目前为止,我只编写了非常小的程序,所以如果它们似乎工作我很即使有其他未执行的代码路径在包和版本的特定组合上会失败,也很高兴。换句话说:我知道风险——但我不能冒险,因为我不知道如何去做。

有没有办法强制 Stack 允许base比依赖项要求中指定的版本更新的版本?

标签: haskellhaskell-stack

解决方案


我认为您正在寻找allow-newer- https://docs.haskellstack.org/en/stable/yaml_configuration/#allow-newer

忽略 .cabal 文件中的版本限制。默认为假。


推荐阅读