Revised Report On Algorithmic Language Scheme

The standard definition of the SchemeLanguage.

Quoting from http://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 http://www.schemers.org/Documents/Standards/R5RS/. Scheme as defined in R5RS contains a powerful high-level macro system (DefineSyntax) and provides call-with-current-continuation [CallWithCurrentContinuation], 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 http://www.r6rs.org/.


One of the reasons for the small size of standard Scheme is the UniformConsentRule?, 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 RightThing. This explains why R5RS doesn't define e.g. a ModuleSystem even though the authors agree that a module system would be a GoodThing. (However see http://library.readscheme.org/page5.html for an online bibliography of Scheme-related papers about modules and ComponentOrientedProgramming.)

The archives of the RnRS authors' mailing list are available online at http://www.swiss.ai.mit.edu/projects/scheme/rrrs-archive.html. 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:

...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 AlgolSixty report ("Revised Report on the Algorithmic Language Algol 60") - see http://www.masswerk.at/algol60/report.htm . Algol 60 was lexically scoped, like Scheme, but unlike the default behaviour of earlier versions of LispLanguage. (CommonLisp's (mostly-)LexicalScope was taken from Scheme.)


CategoryScheme


EditText of this page (last edited April 12, 2008) or FindPage with title or text search