Typically in a Haskell project, I either work interactively with ghci or compile the entire project with cabal build.
However, in some use cases, I may have a computationally intensive routine along with some higher level scripting functionality, say for picking inputs to an analysis algorithm.
Is it possible to use GHCi + GHC such that I compile the computationally intensive module, load the compiled code to re-run with different inputs from within GHCi?
Yes, you can load compiled modules in ghci; if there is an appropriately named
.hi
and.o
file, ghci will use those instead of interpreting the code in the corresponding.hs
file. You will then only have access to the operations that are exported from that module.In case you find yourself using a compiled loaded module when you wanted the interpreted one, you can
:load *foo.hs
to instruct ghci to ignore the compiled version and interpretfoo.hs
.