Haskellで書かれたデータフローベースの最適化ライブラリに取り組んでいます。ライブラリを2つに分割する必要があるようです。
ビルドの依存関係が最小限のコアピース。それを呼び出します
hoopl-core
。完全なピースと呼びます
hoopl
。これは、prettyprinter、QuickCheckなどのパッケージに追加の依存関係がある場合があります。
Glasgow Haskellコンパイラはにのみ依存するhoopl-core
ため、コンパイラをブートストラップするのはそれほど難しくありません。他のコンパイラは、で追加の機能を取得しhoopl
ます。パッケージhoopl
はに依存しhoopl-core
ます。
Debianパッケージツールは、単一のソースツリーから複数のパッケージを構築できます。残念ながら、Cabalはまだそのレベルの洗練度に達していません。ただし、同様の問題を抱えている他のライブラリまたはアプリケーションの設計者がいる必要があります(たとえば、コアライブラリ用のパッケージ、コマンドラインインターフェイス用のパッケージ、GUIインターフェイス用のパッケージなど)。
Cabalを使用して複数の関連するHaskellパッケージを構築および管理するための現在のベストプラクティスは何ですか?