A system based on the notion of a flow graph is used to specify formal
ly and to implement a compiler for a lazy functional language. The com
piler takes a simple functional language as input and generates C. The
generated C program can then be compiled, and loaded with an extensiv
e run-time system to provide the facility to experiment with different
analysis techniques. The compiler provides a single, unified, efficie
nt, formal framework for all the analysis and synthesis phases, includ
ing the generation of C. Many of the standard techniques, such as stri
ctness and boxing analyses, have been included.