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. It also contains a short tutorial to the basic concepts of the language.

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

This report is accompanied by a report describing standard libraries [38]; references to this document are identified by designations such as “library section” or “library chapter”. It is also accompanied by a report containing non-normative appendices [39].

*** DRAFT***

This is a preliminary draft. It is intended to reflect the decisions taken by the editors’ committee, but likely contains many mistakes, ambiguities, and inconsistencies.