我的Haskell软件包可以依赖哪些版本的软件包?

时间:2010-05-15 22:19:04

标签: haskell cabal

我已经准备好将我的第一个包上传到Hackage了!

我在hstest.cabal

中有这个
Executable hstest
        Main-Is:        hstest.hs
        Build-Depends:  base, mtl, directory, ghc, ghc-paths, random, QuickCheck

我理解简单地列出我的包依赖的包是不好的形式;相反,我应该说明需要这些软件包的哪些版本。

我安装的版本是

  • base = 4.1.0.0
  • mtl = 1.1.0.2
  • directory = 1.0.0.3
  • ghc = 6.10.3
  • ghc-paths = 0.1.0.5
  • random = 1.0.0.1
  • QuickCheck = 1.2.0.0

有没有一种简单的方法可以找出我的包装实际需要的每个包装的最早可接受的版本? (即没有安装大量过时的版本并逐一测试它们?)

我认为这些软件包的未来版本可以依赖于哪些软件包?

1 个答案:

答案 0 :(得分:5)

  

有没有一种简单的方法可以找出我的包装实际需要的每个包装的最早可接受的版本

不,没有这方面的工具。

  

我认为这些软件包的未来版本可以依赖于哪些软件包?

最安全的方法是关注the package versioning policy,它表示只依赖于API扩展版本的软件包。这是表单的版本:A.B.*。正如该政策所述:

  

为了最大限度地减少发布新软件包版本时的破坏,您可以使用对次要版本更改不敏感的依赖项(例如foo> = 1.2.1&&< 1.3)。

所以你会做类似的事情:

 QuickCheck >= 1.2 && < 1.3

现在,测试可能会显示您实际使用的功能的上限或上限。