The Lambda Papers

Papers by Guy Steele and Gerald Sussman published as AI Memos by the MIT Artificial Intelligence Laboratory between December 1975 and March 1979.

As noted in Early standards, the tone of these papers is relatively informal and their typesetting targetted 1970s computer printing technology. Scans of original printed copies are available in the digital repository of MIT research and are listed in the Computer History Museum Software Preservation Group's Scheme Project

HTML transcriptions with internal navigation and bibliography links are available here. The formatting of these transcriptions aims to retain the character of the originals, with updated typography and navigation; the HTML versions are self-contained files which can be saved and viewed offline.

Sussman, Gerald Jay and Steele, Guy L. SCHEME: An Interpreter For Extended Lambda Calculus. AIM-349, December 1975. (Note 1)

"Inspired by ACTORS, we have implemented an interpreter for a LISP-like language, SCHEME, based on the lambda calculus, but extended for side effects, multiprocessing, and process synchronization..."

Steele, Guy L and Sussman, Gerald Jay. LAMBDA: The Ultimate Imperative.
AIM-353, March 1976.

"We demonstrate how to model the following common programming constructs in terms of an applicative order language similar to LISP: - Simple Recursion - Iteration - Compound Statements and Expressions - GO TO and Assignment - Continuation-Passing - Escape Expressions - Fluid Variables - Call by Name, Call by Need, and Call by Reference..."

Steele, Guy L. LAMBDA The Ultimate Declarative.
AIM-379, November 1976.

"In this paper, a sequel to LAMBDA: The Ultimate Imperative, a new view of LAMBDA as a renaming operator is presented and contrasted with the usual functional view taken by LISP..."

Steele, Guy L. Compiler Optimization Based on Viewing LAMBDA as RENAME plus GOTO.
May 1977. (Note 2)

"We have developed a compiler for the lexically-scoped dialect of LISP known as SCHEME. The compiler knows relatively little about specific data manipulation primitives such as arithmetic operators, but concentrates on general issues of environment and control..."

Steele, Guy L. Debunking the "Expensive Procedure Call" Myth or, Procedure Call Implementations Considered Harmful or, LAMBDA: The Ultimate GOTO.
AIM-443, October 1977.

"Folklore states that GOTO statements are "cheap", while procedure calls are "expensive". This myth is largely a result of poorly designed language implementations..."

Steele, Guy L and Sussman, Gerald Jay. The Revised Report on SCHEME A Dialect of LISP.
AIM-452, January 1978.

"SCHEME is a dialect of LISP. It is an expression-oriented, applicative order, interpreter-based language which allows one to manipulate programs as data..."

Sussman, Gerald Jay and Steele, Guy L. The Art of the Interpreter or, The Modularity Complex (Parts Zero, One, and Two).
AIM-453, May 1978.

"We examine the effects of various language design decisions on the programming styles available to a user of the language, with particular emphasis on the ability to incrementally construct modular systems. At each step we exhibit an interactive meta-circular interpreter for the language under consideration..."

Steele, Guy L. RABBIT: A compiler for SCHEME (A Dialect of LISP) A Study in Compiler Optimization Based on Viewing LAMBDA as RENAME and PROCEDURE CALL as GOTO.
AITR-474, May 1978.

"We have developed a compiler for the lexically-scoped dialect of LISP known as SCHEME. The compiler knows relatively little about specific data manipulation primitives such as arithmetic operators, but concentrates on general issues of environment and control..."

Steele, Guy L and Sussman, Gerald Jay. Design of LISP-based Processors, or SCHEME: A Dielectric LISP, or Finite Memories Considered Harmful, or LAMBDA: The Ultimate Opcode.
AIM-514, March 1979.

"We present a design for a class of computers whose 'instruction sets' are based on LISP. LISP, like traditional stored-program machine languages and unlike most high-level languages, conceptually stores programs and data in the same way and explicitly allows programs to be manipulated as data. LISP is therefore a suitable language around which to design a stored-program computer architecture..."

Notes

  1. The first report was republished in 1998 with additional notes and retrospective commentary:
  2. Published in