在ghci和ghc之间切换时如何防止重新编译

How can I prevent recompiling when switching between ghci and ghc

当我同时使用带有 -fobject-code 的 ghci 和命令行 ghc 时,从一个切换到另一个时代码会被完全编译。例如,当我在 Emacs 中使用配置为使用 cabal repl 的 haskell 劣质模式进行交互式工作时,代码加载和编译都很好。然后我执行 cabal build 并重新编译相同的代码。

假设 ghci 中的 -fobject-code 实际上使用与 ghc 相同类型的二进制格式,我如何防止这种双重编译?

你可以让ghci和朋友们对编译后的文件使用不同的后缀。将以下内容添加到您的 ~/.ghci

:set -hisuf i_hi
:set -osuf i_o

...ghci 会将内容输出到 foo.i_hifoo.i_o,这不会覆盖 ghc 的 .hi.o 文件。