Online Language Implementation Library

The Scheme Papers

Guy L. Steele Jr. and Gerald J. Sussman, Lambda: the Ultimate Imperative, MIT AI Memo 353.

Guy L. Steele Jr., Lambda: the Ultimate Declarative, MIT AI Memo 379

Guy L. Steele Jr, Debunking the "Expensive Procedure Call" Myth, MIT AI Memo 443

Guy L. Steele Jr. and Gerald J. Sussman, The Art of the Interpreter, MIT AI Memo 453

More on CPS

Richard Kelsey, A Correspondence between Continuation-Passing Style and Static Single Assignment, in the proceedings for IR'95, published as ACM SIGPLAN Notices, 3(30), March 1995.

Garbage Collection

Marvin L. Minsky, A Lisp Garbage Collection Algorithm using Serial Secondary Storage, MIT AI Memo 058

Paul R. Wilson and Sheetal V. Kakkad, Pointer Swizzling at Page Fault Time: Efficiently and Compatibly Supporting Huge Address Spaces on Standard Hardware, International Workshop on Object Orientation in Operating Systems 1992.


The WAM book, reduced 4-up

Lazy Languages

A Software Engineering manifesto for functional programming:

Why Functional Programming Matters by John Hughes.

It is possible to use continuation passing to write I/O and other side-effecting code in a functional style. Monads and related constructs provide a more principled and watertight implementation of this basic idea. They make it possible to write intensive and efficient side-effecting code in a completely pure language.

Simon L. Peyton Jones and Philip Wadler, Imperative functional programming, 20th ACM Symposium on Principles of Programming Languages, 1993. 2-up.

Automatic Differentiation

Web page: The Aargonne National Laboratory Computational Differentiation Project is a good place to start. It contains for instance a collection of automatic differentiation tools

Partial Evaluation

Web page: Partial Evaluation Resources

Web page: An Overview of Partial Evaluation

Tutorial Notes on Partial Evaluation. C. Consel and O. Danvy. In ACM Symposium on Principles of Programming Languages, pages 493-501, 1993.

Barak Pearlmutter <>