我是 hackage 软件包 lrucache 的维护者。我最近收到了一个功能请求,要求为Binary
和NFData
. 这两个都是有用的东西,原则上我对这些实例没有问题。
但是,它们都引入了新的包依赖项,我希望尽可能减少包的依赖项列表。有没有理智的方法来处理这个?可能有超过 20 个不同的包提供有用的类型类,数据结构lrucache
可以在其中实现并从中受益。
显然,将它们全部添加为依赖项是行不通的。但是还能做什么呢?
我可以向 lrucache.cabal 添加标志,以便编译各种实例。就使依赖项列表最小化而言,这很有效,除非您需要它。但这在现实世界中很可怕,因为您不能在 build-depends 部分中指定构建标志。因此,您可以依赖具有特定标志的包,但不指定该依赖项。这迅速减少到几乎无用。
我可以创建一堆孤立的实例包。这样做的好处是允许在 build-depends 部分中指定对这些实例的依赖关系。它的主要缺点是在 hackage 中添加了大量额外的包,并且需要将它们作为单独的包进行维护。
我还可以做些什么?什么是正确的做法?