haskell - 我可以以某种方式使用比包指定的基础版本更高的包吗?
问题描述
我对 Haskell 堆栈很陌生,所以我可能会误解这里的工作方式,但我遇到了一个问题,我已经看过几次了,我想知道我是否走错了路。
简而言之,我有时想使用一个版本规范的包,该包的版本上限低于base
我的 Stack 解析器所包含的版本。
例如,我不能将lts-12.14
解析器与 一起使用PSQueue-1.1
,因为前者包含base-4.11.1
而后者需要base >=4 && <4.11
.
我发现解决这个问题的两种方法是
- 将特定版本添加
base
到 myextra-deps
,确保固定版本在我的包允许的范围内;或者 - 选择一个不同的解析器(使用例如https://www.stackage.org/diff/来确定哪个是最新的解析器,具有足够早的版本
base
)
这两种感觉都不是最理想的,特别是因为我可能想使用具有非重叠范围的包(例如 one>=3 && <4.11
和 one >=4.11
)。我意识到一起使用这样的组合可能会失败,特别是如果它们被锁定在不同的主要版本上base
(假设base
使用 semver),但到目前为止,我只编写了非常小的程序,所以如果它们似乎工作我很即使有其他未执行的代码路径在包和版本的特定组合上会失败,也很高兴。换句话说:我知道风险——但我不能冒险,因为我不知道如何去做。
有没有办法强制 Stack 允许base
比依赖项要求中指定的版本更新的版本?
解决方案
我认为您正在寻找allow-newer
- https://docs.haskellstack.org/en/stable/yaml_configuration/#allow-newer
忽略 .cabal 文件中的版本限制。默认为假。
推荐阅读
- angular - 使用多个参数路由到同一个组件
- python - python、zipfile、文件更新:存储在 ZIP 存档中的多个版本
- arrays - 数组唯一键中的每个孩子都具有反应本机刷出
- android - Android Work Manager 监听剪贴板数据已更改
- jax-ws - 调用 WEBSERVICE 时出错
- uwp - 增量加载集合不存在数据使用社区工具包
- python - 如何为摄像机分配固定编号
- multithreading - 我可以在不读取值的情况下确定数据竞争的结果吗?
- amazon-web-services - 配置 awsvpc 容器以访问 Internet
- python - 将 csv 转换为字典并替换文本中的单词