在一个项目中我可以编译一个模块并以交互方式加载ghci中编译的模块吗?

时间:2015-06-11 02:04:01

标签: haskell compilation ghc read-eval-print-loop ghci

通常在Haskell项目中,我要么与ghci交互式工作,要么用cabal构建编译整个项目。

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

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

1 个答案:

答案 0 :(得分:5)

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

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