Haskell 在项目中,我是否可以编译模块并在ghci中以交互方式加载已编译的模块?

Haskell 在项目中,我是否可以编译模块并在ghci中以交互方式加载已编译的模块?,haskell,compilation,ghc,read-eval-print-loop,ghci,Haskell,Compilation,Ghc,Read Eval Print Loop,Ghci,通常在Haskell项目中,我要么与ghci交互工作,要么使用cabal build编译整个项目 然而,在某些用例中,我可能会有一个计算密集型例程以及一些更高级别的脚本功能,比如为分析算法选择输入 是否可以使用GHCi+GHC编译计算密集型模块,加载编译后的代码以使用GHCi中的不同输入重新运行?是的,您可以在GHCi中加载编译后的模块;如果存在适当命名的.hi和.o文件,ghci将使用这些文件,而不是在相应的.hs文件中解释代码。然后,您将只能访问从该模块导出的操作 如果您发现自己在需要解释的

通常在Haskell项目中,我要么与ghci交互工作,要么使用cabal build编译整个项目

然而,在某些用例中,我可能会有一个计算密集型例程以及一些更高级别的脚本功能,比如为分析算法选择输入


是否可以使用GHCi+GHC编译计算密集型模块,加载编译后的代码以使用GHCi中的不同输入重新运行?

是的,您可以在GHCi中加载编译后的模块;如果存在适当命名的
.hi
.o
文件,ghci将使用这些文件,而不是在相应的
.hs
文件中解释代码。然后,您将只能访问从该模块导出的操作

如果您发现自己在需要解释的模块时使用编译加载的模块,您可以
:load*foo.hs
指示ghci忽略编译版本并解释
foo.hs