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

dav*_*420 7 haskell cabal

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

我有这个hstest.cabal:

Executable hstest
        Main-Is:        hstest.hs
        Build-Depends:  base, mtl, directory, ghc, ghc-paths, random, QuickCheck
Run Code Online (Sandbox Code Playgroud)

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

我安装的版本是

  • 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

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

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

Don*_*art 5

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

不,没有工具可以做到这一点.

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

最安全的方法是遵循包版本控制策略,该策略表示仅依赖于API扩展版本的包.这是形式的版本:A.B.*.正如该政策所述:

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

所以你会做类似的事情:

 QuickCheck >= 1.2 && < 1.3
Run Code Online (Sandbox Code Playgroud)

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