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:
- 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
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