3

JVM ベースのプログラムでは、必ずしもすべてのファイルをコンパイルしなくても、ファイルを .class ファイルにコンパイルしてバイナリを再度実行できます。

Haskellでそれを行うことは可能ですか? プロジェクト内のすべてのファイルをコンパイルしてリンクすることは必須ですか? はいの場合、なぜですか?

バイナリがない場合は、ライブラリをインストールするだけですか?

4

1 に答える 1

4

GHC の場合、公開されたインターフェースが変更されない限り、それに応じてモジュールを再コンパイルすることなく、単一のモジュールを変更して再コンパイルできます。GHC の--makeモード (ghc-7.* のデフォルト) は、再コンパイルが必要かどうかをチェックし、再コンパイルが必要ないと判断できないモジュールのみを再コンパイルします。

cabal パッケージがあり、cabal build1 つのモジュールを変更した場合、コンパイラの出力から、パッケージ内のすべてのモジュールを再コンパイルするのではなく、変更されたモジュールと [おそらく] それに依存するモジュールのみが再コンパイルされることがわかります。

実行可能ファイルをビルドする場合、もちろん再リンクする必要がありますが、古いオブジェクト ファイルの多くは再利用できます。

ライブラリを構築する場合、もちろんライブラリ アーカイブを再構築する必要がありますが、古いオブジェクト ファイルの多くは再利用できます。

于 2012-04-22T12:49:37.240 に答える