Scheme
Scheme is a minimalist dialect of Lisp, created in the mid-1970s by Gerald Jay Sussman and Guy Steele, known for its small, elegant core syntax and emphasis on functional programming and precise semantics.
Definition
Scheme is a minimalist dialect of Lisp, created in the mid-1970s by Gerald Jay Sussman and Guy Steele, known for its small, elegant core syntax and emphasis on functional programming and precise semantics.
Overview
Scheme distilled Lisp's parenthesized, symbolic syntax down to a small set of orthogonal primitives, favoring a minimal, consistent core over the larger feature sets of dialects like Common Lisp. It treats functions as first-class values, supports proper tail-call optimization as a language guarantee (making recursion a practical substitute for loops), and popularized techniques like continuations for advanced control flow — features that made it a favorite language for teaching the deep principles of functional programming and programming language design. Scheme's most influential role has been educational: it was the language used in MIT's landmark "Structure and Interpretation of Computer Programs" (SICP) course and textbook, which shaped how generations of computer science students learned about abstraction, recursion, and interpreters. Its precise, formally specified semantics also made it a popular substrate for programming language research and for building embedded scripting languages within larger applications. Several dialects and implementations grew out of Scheme's lineage — including Racket, originally known as PLT Scheme — which extended the core language with richer libraries and tooling while retaining Scheme's minimalist philosophy. While rarely used for mainstream commercial software today, Scheme's ideas about first-class functions, tail calls, and minimal core language design continue to influence modern functional and multi-paradigm languages.
Key Features
- Small, minimalist core syntax derived from Lisp
- First-class and higher-order functions
- Guaranteed proper tail-call optimization
- Support for continuations enabling advanced control flow
- Homoiconic syntax (code represented as data)
- Formally precise language semantics favored in research and teaching