Skip to main content
    • Aa
    • Aa
  • Get access
    Check if you have access via personal or institutional login
  • Cited by 10
  • Cited by
    This article has been cited by the following publications. This list is generated based on data provided by CrossRef.

    Clark, Tony 2015. XPL: A language for modular homogeneous language embedding. Science of Computer Programming, Vol. 98, p. 589.

    Hufflen, Jean-Michel 2015. Using Model-Checking Techniques for Component-Based Systems with Reconfigurations. Electronic Proceedings in Theoretical Computer Science, Vol. 178, p. 33.

    Clark, Tony and Willans, James 2014. Computational Linguistics.

    Schiller, Jeffrey Turbak, Franklyn Abelson, Hal Dominguez, José McKinney, Andrew Okerlund, Johanna and Friedman, Mark 2014. Proceedings of the 2nd Workshop on Programming for Mobile & Touch - PROMOTO '14. p. 1.

    Strickland, T. Stephen Ren, Brianna M. and Foster, Jeffrey S. 2014. Contracts for domain-specific languages in Ruby. ACM SIGPLAN Notices, Vol. 50, Issue. 2, p. 23.

    Andersen, Jacob Brabrand, Claus and Christiansen, David Raymond 2013. Banana Algebra: Compositional syntactic language extension. Science of Computer Programming, Vol. 78, Issue. 10, p. 1845.

    Clark, Tony and Willans, James 2013. Formal and Practical Aspects of Domain-Specific Languages.

    CULPEPPER, RYAN 2012. Fortifying macros. Journal of Functional Programming, Vol. 22, Issue. 4-5, p. 439.

    FLATT, MATTHEW CULPEPPER, RYAN DARAIS, DAVID and FINDLER, ROBERT BRUCE 2012. Macros that Work Together. Journal of Functional Programming, Vol. 22, Issue. 02, p. 181.

    NAKATA, KEIKO and HASEGAWA, MASAHITO 2009. Small-step and big-step semantics for call-by-need. Journal of Functional Programming, Vol. 19, Issue. 06, p. 699.


Revised6 Report on the Algorithmic Language Scheme

  • DOI:
  • Published online: 01 August 2009

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? *