Scheme

Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis Steele Jr. and Gerald Jay Sussman. It was designed to have an exceptionally clear and simple semantics and few different ways to form expressions. A wide variety of programming paradigms, including imperative, functional, and message passing styles, find convenient expression in Scheme.

Scheme was one of the first programming languages to incorporate first class procedures as in the lambda calculus, thereby proving the usefulness of static scope rules and block structure in a dynamically typed language. Scheme was the first major dialect of Lisp to distinguish procedures from lambda expressions and symbols, to use a single lexical environment for all variables, and to evaluate the operator position of a procedure call in the same way as an operand position. By relying entirely on procedure calls to express iteration, Scheme emphasized the fact that tail-recursive procedure calls are essentially goto's that pass arguments. Scheme was the first widely used programming language to embrace first class escape procedures, from which all previously known sequential control structures can be synthesized. More recently, building upon the design of generic arithmetic in Common Lisp, Scheme introduced the concept of exact and inexact numbers. Scheme is also the first programming language to support hygienic macros, which permit the syntax of a block-structured language to be extended reliably.

MIT/GNU Scheme

MIT/GNU Scheme is a complete programming environment that runs on many unix platforms, as well as Microsoft Windows and IBM OS/2. It features a rich runtime library, a powerful source-level debugger, a native-code compiler, and an integrated Emacs-like editor.

MIT/GNU Scheme is available for Intel-architecture (x86) machines running GNU/Linux, FreeBSD, IBM OS/2 or Microsoft Windows 9x/ME/NT/2000/XP.

NWWYW: 6.001 LA Manual--how to be a Lab Assistant for the introductory programming course at MIT.

Documentation

Other Implementations

GUILE, GNU's Ubiquitous Intelligent Language for Extension, is a library implementation of the Scheme language plus various convenient facilities. It's designed so that you can link it into an application or utility to make it extensible.

Kawa compiles Scheme into Java byte-codes.

PLT Scheme is an umbrella name for a family of implementations of the Scheme programming language.

Pseudoscheme embeds Scheme in Common Lisp.

Scheme 48 is a small and portable implementation based on a byte code interpreter. It should run on any 32-bit byte-addressed machine that has an ANSI C compiler and POSIX support.

SCM is a portable Scheme implementation written by Aubrey Jaffer.

Scsh, a Scheme Shell, is a broad-spectrum systems-programming environment for Unix embedded in R4RS Scheme. Runs on most major Unix platforms.

Skij is a partial Scheme implementation that is implemented in and integrated with Java.

STk is a version of Scheme with a Tk interface.

VSCM is a portable Scheme implementation written by Matthias Blume of Princeton University.

The Open Directory Project maintains a listing of Scheme implementations, which is intended to be comprehensive. It includes free software, proprietary software, and archaic implementations which are of historical interest.

David Pilo Mansion has created a set of visual tools for the Scheme programming language together with a basic interpreter. The program is entirely written in Java and is intended as a visual aid for students that are learning the functional programming language.

Etc.

Send bug reports and other communications concerning MIT Scheme to bug-cscheme at zurich.ai.mit.edu

Last updated 23 October 2003.

This page is maintained by Chris Hanson.