5

したがって、私の最終的な目標は、プロジェクトがインポートするすべてのエンティティが、動作すると主張するバージョンに存在することを確認することにより、cabal ファイルの依存関係の正確性を評価することです。

適切な出発点は、単一のソース ファイルが使用するすべてのインポートされたエンティティのリストを検索することです。必要に応じて、それらがどこから来たかについての情報も含めます。

クラス インスタンスの使用を検出するのは簡単ではないため、当面はクラス インスタンスのケースを無視します。

理想的な答えは、まさにこれを行うツールへのポインターですが、自分で作成するために必要なリソースを指摘する答えも受け入れます(GHCはこの情報を収集しますか?どこかにダンプしますか?できますか?そうするように説得されますか?)

4

1 に答える 1

4

最終的に、haskell-namesは最小限の労力でそのようなことを行うことができるはずです。1 つの注意点は、インターフェイス ファイルを生成するために、haskell-names 独自の「コンパイラ」を使用して、参照するすべてのパッケージを再「コンパイル」する必要があることです。将来的には、すべてのハック パッケージ用に事前にコンパイルされたインターフェイスを配布する予定です (おそらくハック自体を介して)。

現在、haskell-names は進行中であり、baseまだコンパイルできません。

GHC API には、パッケージをインストールしていればインターフェース ファイルが既にあるという利点がありますが、インポートされたエンティティのリストにアクセスできるかどうかはわかりません。

于 2013-03-04T16:01:20.657 に答える