The Scheme Programming Language

Click below to go directly to a specific section:
History| Significant Language Features| Areas of Application| Sample Programs|
Related Links| Printed References| Acknowledgements


Scheme started as an experiment in programming language design by challenging some fundamental design assumptions. It emerged from MIT in the mid-1970's. It is a dialect of the Lisp Programming Language invented by Guy Lewis Steele Jr. and Gerald Jay Sussman. Originally called Schemer, it was shortened to Scheme because of a 6 character limitation on file names. Scheme is a small, exceptionally clean language which is fun to use. The language was designed to have very few, regular constucts which compose well to support a variety of programming styles including functional, object-oriented, and imperative.

Significant Language Features

Scheme has lexical scoping, uniform evaluation rules, and uniform treatment of data types. Scheme does not have the concept of a pointer, uninitialized variables, specialized looping constucts, or explicit storage management. In Scheme, all data types are equal. What one can do to one data type, one can do to all data types. There are seven kinds of expressions: Constant, Variable reference, Procedure creation, Procedure application, Conditional, Assignment, and Sequence. Scheme also has the usual assortment of data types: Characters, Strings, Arrays, Lists, Numbers, Functions (also called procedures), Boolean, Ports, and Symbols. Numbers are especially interesting in that an integer is a rational and a real is a complex. Scheme requires no looping constructs. Any function which calls itself in the "tail" position is just a loop. Scheme has several important advantages. It is elegantly simple in that regular structure and trivial syntax avoids "special case" confusion. Its expressiveness means that one spends little time trying to work around the language--it lets users concentrate on what they want to say rather than on how to say it. Its support of a variety of styles (including object-oriented) allows users to better match their solution style to the style of the problems to be solved. Its formal underpinnings make reasoning about programs much easier. Its abstractive power makes it easy to separate system specific optimizations from reusable code. Its composability makes it easy to construct systems from well-tested components.

Areas of Application

Scheme is currently gaining favor as a first programming language in universities and is used in industry by such companies as DEC, TI, Tektronix, HP, and Sun.

Sample Programs

Related Links

Printed References

  1. Abelson, H., Sussman, G.J., and Sussman, J. (1985). Structure and Interpretation of Computer Programs. MIT Press, Cambridge, Mass.
  2. Dybvig, Kent R. (1987). The Scheme Programming Language. Prentice Hall.
  3. Eisenberg (1988). Programming in Scheme. MIT Press.
  4. Eisenberg, Hartheimer, Clinger, and Abelson (1990). Programming in MacScheme. MIT Press.
  5. Ferguson, Martin, and Kaufman (1988). The Schemer's Guide. Schemers Inc.
  6. Lightship (1990). MacScheme. MIT Press.
  7. Springer, G. and Friedman, D.P. (1989). Scheme and the Art of Programming. MIT Press and McGraw-Hill.


I would like to thank the Internet for its vast information on the programming language Scheme, Scott Ruthfield ( for his hello-world program, Ken Dickey for his substring search program, Richard A. O'Keefe for his sort information and Ozan Yigit for his prime number program.
[Prev] [Home] [Next]

Last modified: 9:30 PM on 10/20/1999
This page has been accessed