The Evolution of Scheme

Scheme came into existence as a ``toy'' Lisp interpreter that Guy Steele and Gerald Sussman wrote in 1975 to study some aspects of Carl Hewitt's theory of actors, an object-oriented computational paradigm. Following the tradition of the AI languages ``Planner'' and ``Conniver'', Steele and Sussman named their language ``Schemer''; the name was later truncated to ``Scheme'' to fit the 6-character filename limitation of the ITS operating system. This early Scheme language centered around a rather compact set of concepts and was composed of only a small number of language constructs and primitive data types; this ``minimalistic'' design approach has continued to influence the development of Scheme until today.

During the late 1970s, Scheme has been used at the MIT AI Lab as the basis for a number of papers exploring semantic concepts of programming languages. A first Scheme compiler (Rabbit) was written by Steele in 1978, and Scheme began to be used outside MIT during that period, mainly as the framework for experimentation by theoreticians (first at the University of Indiana, where similar research activities were going on). As Scheme is much smaller than most Lisp dialects and can be put to work on top of Lisp systems easily, various Scheme implementations emerged during the early 1980s (at the Universities of Yale and Indiana, and at MIT, among other sites). Also, several commercial implementations of Scheme were made by existing and newly founded companies in the following years, among them Chez Scheme, MacScheme for the Apple Macintosh, and PC Scheme by Texas Instruments.

Scheme rapidly became popular not only among groups interested in the theoretical and mathematical aspects of programming languages, but also as a tool for research and as the basis for computer science curricula at universities and colleges; it has even found use as a vehicle for teaching liberal arts students about programming. The now classic book Structure and Interpretation of Computer Programs (often referred to as ``SICP'') by Harold Abelson and Gerald Sussman has significantly contributed to the popularity of Scheme in larger circles; the book is based on the curriculum of an undergraduate computer science course at MIT for which Scheme was adopted.

Scheme Standardization

The Revised Report on Scheme that was written by Steele and Sussman in 1978 was the first in a series of language definitions called The Revised, ..., Revised Report on Scheme (the title is a running gag and is often abbreviated to R^nRS). The latest in this series of reports, the Revised, Revised, Revised, Revised Report on the Algorithmic Language Scheme (R^4RS), was published in 1991 and provides, among other things, a formal denotational semantics of the Scheme language. With the adoption of a new macro facility as a (semi-official) appendix to the R^4RS, Scheme became the first programming language with reliable, hygienic macros. This macro extension has been inspired by a pattern-directed syntactic substitution language invented by Eugen Kohlbecker in 1986 and the concept of ``syntactic closures''.

In 1990 a slightly modified version of the R^3RS was adopted as an IEEE and ANSI standard; the relationship between this standard and the R^nRS is that the official standard corresponds to the R^n-1RS when the R^nRS is current.

The main impetus behind the evolvement of Scheme is an informally constituted group of ``Scheme authors'' who work on the revisions of the Scheme report at sporadic meetings and by electronic mail through an ``rrrs-authors'' mailing list. New features are added to the language only if an unanimous agreement can be reached within the group of Scheme authors. This rule ensures that the language remains relatively stable and small. In a way, Scheme can be regarded as the antithesis to Common Lisp: while many features have been added to Common Lisp as the result of a compromise or to satisfy one of the subgroups participating in the standardization process, a new feature is added to Scheme only if it is unanimously considered a ``Good Thing''.

References

Guy L. Steele and Gerald J. Sussman, The Revised Report on Scheme, a Dialect of Lisp; MIT AI Memo 452, January 1978.

Guy L. Steele Jr., Rabbit: a Compiler for Scheme, MIT AI Memo 474, Massachusetts Institute of Technology, Cambridge, Massachusetts, May 1978.

Aaron Konstam and John E. Howland, Scheme as an Expository Language for Liberal Arts Students, Proceedings of the Third International Lisp Users and Vendors Conference, Cambridge, Massachusetts, 1993.

Harold Abelson and Gerald J. Sussman with Julie Sussman, Structure and Interpretation of Computer Programs, MIT Press, Cambridge, Massachusetts, 1985.

William Clinger and Jonathan Rees (Editors), Revised^4 Report on the Algorithmic Language Scheme, November 2, 1991.

IEEE Std 1178-199 IEEE Standard for the Scheme Programming Language, New York, May 28, 1991 (approved December 10, 1990).

Eugene E. Kohlbecker, Syntactic Extensions in the Programming Language Lisp, PhD thesis, University of Indiana, August 1986.

Eugene E. Kohlbecker, Daniel P. Friedman, Matthias Felleisen, Bruce Duba, Hygienic macro expansion, Proceedings of the 1986 ACM Conference on Lisp and Functional Programming pp. 151-161, August 1986.

Alan Bawden and Jonathan Rees, Syntactic Closures, Proceedings of the 1988 ACM Symposium on Lisp and Functional Programming, pp. 86-95

Guy L. Steele Jr. and Richard P. Gabriel, The Evolution of Lisp, ACM SIGPLAN Notices, vol. 28, no. 3, pp. 231-270, 1993.

Oliver Laumann     net@informatik.uni-bremen.de