Aviva Directory » Computers & Internet » Programming » Lisp » Scheme

Created at MIT in the 1970s, the Scheme programming language is a dialect of Lisp.

Scheme was influenced by Clojure, Common Lisp, Dylan, EuLisp, Haskell, Hop, JavaScript, Julia, Lua, MultiLisp, Python, R, Racket, Ruby, Rust, S, Scala, and T. Its chief developers were Guy L. Steele and Gerald Jay Susman.

One of the goals for Scheme was for it to be minimalist. It emphasizes functional programming and domain-specific languages, although it adapts to other styles. Known for its clean and minimalist design, Scheme is one of the longest-lived and best-studied dynamic programming languages, and it has several portable implementations.

Scheme standard reports state, "Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary. Scheme demonstrates that a very small number of rules for forming expressions, with no restrictions on how they are composed, suffice to form a practical and efficient programming language that is flexible enough to support most of the major programming paradigms in use today."

Scheme was among the first programming languages to include first-class procedures, which are similar to the functions in the lambda calculus. This feature demonstrated the usefulness of static scope rules and block structure in a dynamically typed language. Lisp, on the other hand, was the first major dialect of Lisp to distinguish procedures from lambda expressions and symbols and to evaluate the operator position of a procedure call in the same way as an operand position while using a single lexical environment for all variables.

Scheme is similar to Common Lisp and Ci, in that the programming language is based around a well-known standard with many implementations and the people who designed the language are no longer active with its continued development and maintenance. Given that the founders are gone, there is no one Scheme community associated with the language, although several sub-communities have formed. The most official of these is known as the Steering Committee, which approves revisions of the standard, although it is not involved in the day-to-day affairs of the language. Most Scheme communities are gathered around Scheme's major implementations and the Scheme Workshop.

The Scheme language is standardized in the official Institute of Electrical and Electronics Engineers (IEEE) standard, and a defacto standard called the Revised Report on the Algorithmic Language Scheme (RnRS). A widely implemented standard is R5RS (1998), and the most recently ratified standard (as of this writing) is R7RS-small (2013).

The more expansive and modular R6RS was ratified in 2007. Currently, the newest releases of various Scheme implementations support the R6RS standard, which introduced significant changes to the language. The source code is now specified in Unicode, as is character data.

The R7RS standard was controversial because many developers considered it to be a departure from the minimalist philosophy of Scheme. In 2009, the Scheme Steering Committee announced its intention to split Scheme into two languages: a large modern programming language for programmers, and a small version that retained the minimalism loved by educators and casual implementors. This is represented in the release of R7RS-small in 2013.

The focus of this part of our programming language web guide is on the Scheme programming language, including those related to its development and maintenance, IDEs or editors designed to ease Scheme programming, and other projects closely related to the language.




T (language)



Recommended Resources

Search for Scheme on Google or Bing