我已经准备好将我的第一个包上传到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
有没有一种简单的方法可以找出我的包实际需要的每个包的最早可接受的版本? (即没有安装大量过时版本并逐个测试?)
我可以假设我的软件包可以依赖于这些软件包的未来版本?
Is there an easy way of finding out what the earliest acceptable versions of each of these packages my package actually needs
不,没有工具可以做到这一点.
Which future versions of these packages can I assume my package can depend on?
最安全的方法是遵循the package versioning policy,它说只依赖于API扩展版本的软件包.这是形式的版本:A.B.*.正如该政策所述:
To minimize breakage when new package versions are released,you can use dependencies that are insensitive to minor version changes (e.g. foo >= 1.2.1 && < 1.3).
所以你会做类似的事情:
QuickCheck >= 1.2 && < 1.3