我对Haskell堆栈还很陌生,所以我可能会误解事情在这里的工作方式,但是我遇到了一个问题,我已经看过几次了,并且想知道我是否在做错事方式。
简而言之,有时我想使用版本规范被限制为比我的堆栈解析器所包含的版本低base
的软件包。
例如,我不能将lts-12.14
解析器与PSQueue-1.1
一起使用,因为前者包括base-4.11.1
,而后者则需要base >=4 && <4.11
。
我找到的两种解决方法之一就是
base
的特定版本添加到我的extra-deps
中,确保固定的版本在我的软件包允许的范围内;或base
)这两种感觉都不理想,尤其是因为我可能想使用具有非重叠范围的包(例如,一个>=3 && <4.11
和一个>=4.11
)。我意识到,使用这种组合可能会失败,特别是如果它们锁定在base
的不同主要版本上(假设base
使用semver),但是到目前为止,我只写了很小的程序,所以即使它们看起来有效,即使有其他非执行的代码路径在特定的软件包和版本组合上会失败,我也很高兴。换句话说:我知道风险-但我无法冒险,因为我不知道怎么做。
是否有一种方法可以强制Stack允许base
的版本高于依赖项要求中指定的版本?
答案 0 :(得分:5)
我认为您正在寻找allow-newer
-https://docs.haskellstack.org/en/stable/yaml_configuration/#allow-newer
忽略.cabal文件中的版本边界。默认值为false。