The GHC compiler is then used to create a native executable. At present, the
focus has just been on creating a compiler that will generate correct, working
code. Many optimizations could and need to be made for time and space...

Note the following type is used for all functions generated by the compiler:

Find all variables defined at this level and load their symbols into
the environment. This allows the compiler validation to work even
though a variable is used in a sub-form before it is defined further
on down in the program