在基于 JVM 的程序中,您可以将文件编译为 .class 文件并能够再次运行二进制文件,而不必编译所有文件。
有可能在haskell中做到吗?是否必须编译和链接项目中的所有文件?如果是,为什么?
如果没有二进制文件,你只是在安装一个库怎么办?
对于 GHC,您可以更改和重新编译单个模块,而无需根据该模块重新编译模块,前提是公开的接口没有更改。GHC 的--make
模式(从 ghc-7.* 开始默认)检查是否需要重新编译,并且只重新编译那些无法确定不需要的模块。
如果您有一个 cabal 包并且cabal build
在更改了一个模块之后,您可以从编译器输出中看到它通常不会重新编译包中的所有模块,只有更改的模块和 [也许] 依赖于它的模块。
如果您构建一个可执行文件,当然必须重新链接它,但许多旧的目标文件可以重用。
如果你建立一个库,当然必须重建库档案,但许多旧的目标文件可以重复使用。