hackage包依赖项和面向未来的库

yai*_*chu 6 haskell cabal hackage

在cabal文件的dependencies部分中:

Build-Depends: base >= 3 && < 5, transformers >= 0.2.0
Run Code Online (Sandbox Code Playgroud)

我应该做些什么

Build-Depends: base >= 3 && < 5, transformers >= 0.2.0 && < 0.3.0
Run Code Online (Sandbox Code Playgroud)

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

或不?

我将使用一个真实的例子:Hackage上的"List"包(List monad转换器和类)

  • 如果我没有限制 - 我的包装可能会因"变形金刚"的改变而破裂
  • 如果我把限制-使用"变形金刚",但使用的是较新的版本将无法使用用户liftliftIO使用ListT,因为它只是这些类变压器,0.2.X的实例

我想应用程序应该总是设置上限,以便它们永远不会中断,所以这个问题只是关于库:

我应该使用依赖关系的上限版本吗?

GS *_*ica 4

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

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

  • 我在您的回答中添加了上述政策的快速摘要。我希望你不介意,但如果你介意,请随意更改/改写/恢复它。 (2认同)