我正在研究用 Haskell 编写的基于数据流的优化库。现在看来,图书馆很可能不得不分成两部分:
具有最小构建依赖关系的核心部分;叫它
hoopl-core
。一个完整的部分,称为它
hoopl
,它可能对诸如漂亮打印机、QuickCheck 等包有额外的依赖关系。
这个想法是 Glasgow Haskell 编译器将仅依赖于hoopl-core
,因此引导编译器不会太困难。其他编译器将在hoopl
. 包hoopl
将取决于hoopl-core
.
Debian 软件包工具可以从一个源代码树构建多个软件包。不幸的是,Cabal 还没有达到那种复杂程度。但是肯定有其他库或应用程序设计者有类似的问题(例如,一个包用于核心库,另一个用于命令行界面,另一个用于 GUI 界面)。
目前使用 Cabal 构建和管理多个相关 Haskell 包的最佳实践是什么?