Skip to main content
    • Aa
    • Aa

Revised6 Report on the Algorithmic Language Scheme


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 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 gotos 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. A subsequent version of Scheme introduced the concept of exact and inexact number objects, an extension of Common Lisp's generic arithmetic. More recently, Scheme became the first programming language to support hygienic macros, which permit the syntax of a block-structured language to be extended in a consistent and reliable manner.

Linked references
Hide All

This list contains references from the content that can be linked to their source. For a full set of references and notes please see the PDF or HTML where available.

J. W. Backus , F.L. Bauer , J. Green , C. Katz , J. McCarthy P. Naur , A. J. Perlis , H. Rutishauser , K. Samuelson , B. Vauquois J. H. Wegstein , A. van Wijngaarden , & M. Woodger (1963). Revised report on the algorithmic language Algol 60. Communications of the ACM, 6 (1), 117.

R. Kent Dybvig , Robert Hieb , & Carl Bruggeman . (1992). Syntactic abstraction in Scheme. Lisp and symbolic computation, 5 (4), 295326.

Jacob Matthews , Robert Bruce Findler , Matthew Flatt , & Matthias Felleisen . (2004). A visual environment for developing context-sensitive term rewriting systems. Proceedings 15th conference on rewriting techniques and applications. Aachen: Springer-Verlag.

Andrew Wright , & Matthias Felleisen . (1994). A syntactic approach to type soundness. Information and computation, 115 (1), 3894. First appeared as Technical Report TR160, Rice University, 1991.

Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Journal of Functional Programming
  • ISSN: 0956-7968
  • EISSN: 1469-7653
  • URL: /core/journals/journal-of-functional-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *


Full text views

Total number of HTML views: 0
Total number of PDF views: 20 *
Loading metrics...

Abstract views

Total abstract views: 258 *
Loading metrics...

* Views captured on Cambridge Core between September 2016 - 20th August 2017. This data will be updated every 24 hours.