我是一个关于hackage的软件包的维护者,lrucache.我最近收到了一个功能请求,用于添加Binary和NFData的实例.这两个都是有用的东西,原则上我对这些事情没有问题.
但是,它们都引入了新的软件包依赖关系,我希望尽可能地减少软件包的依赖列表.有没有一个理智的方法来处理这个?可能有二十多个不同的包提供了有用的类型类,lrucache可以实现数据结构,并获得一些好处.
显然,将它们全部添加为依赖关系是非启动的.但还有什么可以做的?
我可以添加lrucache.cabal的标志,这将使编译各种实例.在使依赖列表最少的情况下,除非你想要,否则这样做是有效的.但是在现实世界中是可怕的,因为您无法在构建依赖部分中指定构建标志.因此,您可以依赖具有特定标志的包,但不能指定依赖关系.这很快就减少到接近无用的程度.
我可以创建一堆孤儿实例包.这具有允许在构建依赖部分中指定对这些实例的依赖性的优点.它的主要缺点是添加了大量额外的软件包来进行黑客攻击,并需要将它们保持为单独的软件包.
我还可以做些什么?什么是正确的事情?
在cabal(包装系统)本身中缺少可选依赖系统,选项不是太好.
原文链接:https://www.f2er.com/javaschema/281939.html一个选项如下.您可以为您可能希望将主包与之集成的每个附加包创建一个额外的包.
例如,如果您希望lrucache与二进制整合,您可以制作一个包含集成的附加包lrucache-binary(在这种情况下,键入类实例).同样,一个你自己的lrucache-nfdata的一个新软件包可以将lrucache与nfdata进行整合.
那么如果有人喜欢lrucache和它的二进制整合,他可以依赖[binary,lrucache,lrucache-binary]在一起.