Revised Report On Algorithmic Language Scheme

The standard definition of the Scheme Language.

Quoting from www.schemers.org :

There are two standards for Scheme: an official standard with IEEE and a de facto one, often called "RnRS", short for the Revised^nth Report on the Algorithmic Language Scheme. In colloquial use, "Scheme standard" usually refers to the latter.

At the time of this writing Scheme is defined by the "Revised Revised Revised Revised Revised Report on the Algorithmic Language Scheme" which is usually referenced as R5RS and is available online at www.schemers.org . Scheme as defined in R5RS contains a powerful high-level macro system (Define Syntax) and provides call-with-current-continuation [Call With Current Continuation], call-with-values, eval and dynamic-wind.

Since August 2007 the new standard is R6RS. It adds quite useful stuff: a module system, unicode, an exception system, and so on, see www.r6rs.org .


One of the reasons for the small size of standard Scheme is the Uniform Consent Rule, according to which all the authors of the report have to agree to a proposal in order for it to be accepted. I.e. a feature will only be added to the language if all authors agree that it is the Right Thing. This explains why R5RS doesn't define e.g. a Module System even though the authors agree that a module system would be a Good Thing. (However see library.readscheme.org for an online bibliography of Scheme-related papers about modules and Component Oriented Programming.)

The archives of the RnRS authors' mailing list are available online at www.swiss.ai.mit.edu . They provide valuable background information and insight into the decisions for inclusion and omission of some of the more controversial features of Scheme.


Not only is it the definition of Scheme, but it is a model of how all standards should look:

Short and Concise. A full language is defined in 50 pages.

Well-defined.

With a flavor of scholarly work. Rigor, style, references, citations.

Stuffed with examples.

...though it's only simple due to describing a simple thing, and it's only well defined and scholarly because it's a language designed with a strong mathematical flavour. There's plenty of utility in other languages which are harder to write that kind of standard for, or just those which have more complexity in general. It's also not clear whether you mean the standard or the standards document. It seems a nice enough standard, but I doubt that "someday all standards will look like this".


The title is surely a reference to the Algol Sixty report ("Revised Report on the Algorithmic Language Algol 60") - see www.masswerk.at . Algol 60 was lexically scoped, like Scheme, but unlike the default behaviour of earlier versions of Lisp Language. (Common Lisp's (mostly-)Lexical Scope was taken from Scheme.)


See original on c2.com