首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hackage包依赖项和未来的防库库

hackage包依赖项和未来的防库库
EN

Stack Overflow用户
提问于 2010-05-12 23:34:24
回答 3查看 379关注 0票数 6

在阴谋文件的依赖项部分:

代码语言:javascript
复制
Build-Depends: base >= 3 && < 5, transformers >= 0.2.0

我是不是该做点什么

代码语言:javascript
复制
Build-Depends: base >= 3 && < 5, transformers >= 0.2.0 && < 0.3.0

(对我所依赖的软件包的版本设置上限)

还是不想?

我将使用一个实际的例子:我的“列表”包的黑客(列表单变压器和类)

  • 如果我不加限制-我的包裹可能会打破“变压器”的变化。
  • 如果我确实设置了限制--使用“变压器”但正在使用更新版本的用户将无法在liftliftIO中使用ListT,因为它只是这些类型变压器的一个实例-0.2.x

我想应用程序应该始终设置上限,这样它们才不会中断,所以这个问题只是关于库的:

我是否应该使用依赖项的上限?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-13 21:26:27

有一个明确的政策推荐上界--特别是参见第3节(“Cabal中的依赖项”)。其他答案为这一政策提供了进一步的理由。

简而言之,上限应该是< A.(B+1)的形式,其中A和B是当前版本(A.B.C...)的第一个元素。这是因为增加A.B应该意味着版本打破了旧的API。

票数 4
EN

Stack Overflow用户

发布于 2010-05-13 01:30:32

想想失败的模式:

  • 有了上限,您的包就会生成,或者阴谋会对不满意的构建依赖发出抱怨。责备是明确的。
  • 没有上限,客户有一个最新版本的变压器,它不是向后兼容。您的软件无法构建;GHC抱怨您的代码如何不编译。你的软件看起来糟透了。

放上上界。

票数 2
EN

Stack Overflow用户

发布于 2010-05-13 00:31:57

国际海事组织对公认的版本号设置上限是正确的。考虑到Hackage使用的版本号的语义,当然不能保证您的包将在这种情况下使用转换器0.3.0。

不过,我还没有看到任何关于这个问题的真正讨论,除了基本包之外,似乎没有使用上限的一般建议。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2823522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档