By default, GHCi compiles Haskell source code into byte-code
    that is interpreted by the runtime system.  GHCi can also compile
    Haskell code to object code: to turn on this feature, use the
    -fobject-code flag either on the command line or
    with :set (the option
    -fbyte-code restores byte-code compilation
    again).  Compiling to object code takes longer, but typically the
    code will execute 10-20 times faster than byte-code.
Compiling to object code inside GHCi is particularly useful
    if you are developing a compiled application, because the
    :reload command typically runs much faster than
    restarting GHC with --make from the command-line,
    because all the interface files are already cached in
    memory.
There are disadvantages to compiling to object-code: you can't set breakpoints in object-code modules, for example. Only the exports of an object-code module will be visible in GHCi, rather than all top-level bindings as in interpreted modules.