Help, a fast interactive lazy functional language system

This thesis describes an interactive compiler for a lazy functional language--Haskellesque Interactive Equational Logic Programming (Hielp)--which compiles very rapidly with surprisingly little compromise in the execution speed of the compiled code. The compiler achieves this goal with a new abstract machine--the HAM--designed to realize the gains of many optimizations which are traditionally performed as additional compile time steps, such as instruction scheduling and partial evaluation, with code that is generated directly. It is this complete commitment to generating as good code as possible without the benefit of any post pass optimizations which distinguishes the HAM from other abstract machines used by lazy functional language compilers. The underlying motivation for this new approach is a desire for rapid, incremental compilation. Each of the techniques and insights required to make a HAM implementation give good run time performance are explored in detail, and measurements of the effects of each improvement on a variety of benchmark programs are given. Finally, Hielp is compared to other current lazy function programming systems, both quantitatively, in terms of compilation speed, execution speed, application size and compiler size, and qualitatively, in terms of code generation strategy and run time organization.