This book explores a subclass known as lazy functional languages, beginning with the theoretical issues and continuing through abstract interpretation and offering improved techniques for implementation.
The class of programming languages commonly known as functional includes Lisp, Scheme, ML, and Miranda TM. This book explores a subclass known as lazy functional languages, beginning with the theoretical issues and continuing through abstract interpretation and offering improved techniques for implementation. Now that advanced compiler technology has made it possible for lazy functional languages to compare favorably in run-time with more traditional languages such as C and Pascal, this monograph tackles problems of implementation such as time and memory overheads and restrictions on parallelism. Specifically, it describes a more efficient implementation model, the evaluation transformer model, that can be used when information is known about how functions use their arguments, develops a semantically sound analysis technique called abstract interpretation, which can determine this information, and shows how to use the information to compile more efficient code for sequential and parallel machines.
Introduction • Operational and Denotational Semantics of the Typed Lambda Calculus • A Framework for the Abstract Interpretation of Functional Languages • Some Example Abstract Interpretations • Evaluation Transformers • Implementing Functional Languages on Sequential and Parallel Machines • Relationship to Other Work • Epilogue • Appendixes: Additional Proofs • The Spineless G-Machine