Scheme Standards

The Scheme programming language was introduced in the 1975 paper, Scheme: An Interpreter for Extended Lambda Calculus. Since then it has been improved and extended through many rounds of standardization. The authoritative standards are the Scheme reports. Their names follow the convention Revisedn Report on the Algorithmic Language Scheme, abbreviated RnRS.

Modern standards

Most active Scheme implementations now support one or both of these standards. Writing code that works on both R6RS and R7RS is possible with some care.

Revised7 Report on the Algorithmic Language Scheme (2013)

Abbreviated R7RS, this standard brings back the simplicity of R5RS in the core language. Complexity has been moved into an optional large edition that is still a work in progress.

What's new: define-library definitions

Official documents (PDF):
R7RS Small Edition

Unofficial documents with errata corrected (PDF):
R7RS Small Edition

Unofficial documents with errata corrected (browse on the web):
R7RS Small Edition

Editors' list of errata

Editors' home page

Editors' version control repository

Revised6 Report on the Algorithmic Language Scheme (2007)

Abbreviated R6RS, this standard abandoned the simplicity of R5RS and shipped a more full-featured language. Error situations are much more closely specified; a formal hierarchy of condition (exception) types is given.

This is the first standard with a library system, enabling programmers to share libraries that work out-of-the-box on multiple Scheme implementations.

What's new: library definitions, procedural macros via syntax-case, condition system, standard condition hierarchy, hash tables, custom ports, explicit Unicode support, transcoding and endianness, a much larger standard library.

Official documents (PDF):
R6RS, Standard Libraries, Non-Normative Appendices, Rationale

Unofficial documents with errata corrected (PDF):
R6RS, Standard Libraries, Non-Normative Appendices, Rationale

Unofficial documents with errata corrected (browse on the web):
R6RS, Standard Libraries, Non-Normative Appendices, Rationale

Editors' list of errata

Editors' home page

Editors' version control repository (GitHub mirror)

Classic standards

These standards present the core Scheme syntax and semantics in essentially the same form as it now is.

Revised5 Report on the Algorithmic Language Scheme (1998)

Abbreviated R5RS, this standard comes closest to a Platonic Form of Scheme before later standards tackle the complexities of programming in the large with features such as libraries and exceptions.

Weighing in at 50 pages, the R5RS document is an object of reverence among programming language enthusiasts. It is a touchstone of the Scheme community and is considered an exemplar of a concise and expressive language specification in other communities as well.

What's new: syntax-rules macros

Official documents (PDF): R5RS

Unofficial documents with errata corrected (browse on the web): R5RS

Editors' list of errata

Revised4 Report on the Algorithmic Language Scheme (1991)

Abbreviated R4RS

Scheme starts really becoming Scheme with R4RS, e.g. hygienic macros were optional and in the appendix.

Official documents (PDF): R4RS

Revised3 Report on the Algorithmic Language Scheme (1986)

Abbreviated R3RS, this was the first Scheme report laid on the now-familiar TeX template.

Official documents (PDF): R3RS

More information

Early standards

Formal standards (ISO and IEEE)

Standardization process

See also: Scheme research, especially the lambda papers from MIT.


About standards.scheme.org