20 February 1998

## Revised(5) Report on the Algorithmic Language Scheme

> RICHARD KELSEY, WILLIAM CLINGER, AND JONATHAN REES (Editors)
> H. ABELSON | R. K. DYBVIG | C. T. HAYNES | G. J. ROZAS
> N. I. ADAMS IV | D. P. FRIEDMAN | E. KOHLBECKER | G. L. STEELE JR.
> D. H. BARTLEY | R. HALSTEAD | D. OXLEY | G. J. SUSSMAN
> G. BROOKS | C. HANSON | K. M. PITMAN | M. WAND

Dedicated to the Memory of Robert Hieb

## Summary

The report gives a defining description of the programming language Scheme. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis Steele Jr. and Gerald Jay Sussman. It was designed to have an exceptionally clear and simple semantics and few different ways to form expressions. A wide variety of programming paradigms, including imperative, functional, and message passing styles, find convenient expression in Scheme.

The introduction offers a brief history of the language and of the report.

The first three chapters present the fundamental ideas of the language and describe the notational conventions used for describing the language and for writing programs in the language.

Chapters Expressions and Program structure describe the syntax and semantics of expressions, programs, and definitions.

Chapter Standard procedures describes Scheme's built-in procedures, which include all of the language's data manipulation and input/output primitives.

Chapter Formal syntax and semantics provides a formal syntax for Scheme written in extended BNF, along with a formal denotational semantics. An example of the use of the language follows the formal syntax and semantics.

The report concludes with a list of references and an alphabetic index.

## Contents