我可以以某种方式使用比指定软件包更高版本的base吗?

时间:2019-01-14 18:08:54

标签: haskell haskell-stack

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

简而言之,有时我想使用版本规范被限制为比我的堆栈解析器所包含的版本低base的软件包。

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

我找到的两种解决方法之一就是

  • base的特定版本添加到我的extra-deps中,确保固定的版本在我的软件包允许的范围内;或
  • 选择其他解析器(例如,使用https://www.stackage.org/diff/来确定哪个是最新的解析器,并且版本早于base

这两种感觉都不理想,尤其是因为我可能想使用具有非重叠范围的包(例如,一个>=3 && <4.11和一个>=4.11)。我意识到,使用这种组合可能会失败,特别是如果它们锁定在base的不同主要版本上(假设base使用semver),但是到目前为止,我只写了很小的程序,所以即使它们看起来有效,即使有其他非执行的代码路径在特定的软件包和版本组合上会失败,我也很高兴。换句话说:我知道风险-但我无法冒险,因为我不知道怎么做。

是否有一种方法可以强制Stack允许base的版本高于依赖项要求中指定的版本?

1 个答案:

答案 0 :(得分:5)

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

  

忽略.cabal文件中的版本边界。默认值为false。