在基于JVM的程序中,您可以将文件编译为.class文件,并且能够再次运行二进制文件,而无需编译所有文件。
是否可以在haskell中执行此操作?是否必须编译和链接项目中的所有文件?如果是,为什么?
如果没有二进制文件,你只是在安装一个库?
答案 0 :(得分:4)
对于GHC,您可以更改和重新编译单个模块,而不必根据具体情况重新编译模块,前提是暴露的接口不会更改。 GHC的--make
模式(默认为ghc-7。*)检查是否需要重新编译,并仅重新编译那些无法确定不需要的模块。
如果您在更改一个模块后有一个cabal包并且cabal build
,您可以从编译器输出中看到它不会重新编译包中的所有模块,只有更改的模块和[可能]取决于它的那些。
如果您构建可执行文件,那当然必须重新链接,但许多旧的目标文件可以重复使用。
如果您构建库,则必须重建库存档,但可以重用许多旧的目标文件。