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

我已经准备好将我的第一个上传到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

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

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...