Revised 6 Report on the Algorithmic Language Scheme
- 1 March 2009
- journal article
- research article
- Published by Cambridge University Press (CUP) in Journal of Functional Programming
- Vol. 19 (S1) , 1-301
Abstract
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.Keywords
This publication has 13 references indexed in Scilit:
- An operational semantics for SchemeJournal of Functional Programming, 2008
- Extending the scope of syntactic abstraction1999
- Revised5 Report on the Algorithmic Language SchemeHigher-Order and Symbolic Computation, 1998
- A Syntactic Approach to Type SoundnessInformation and Computation, 1994
- Syntactic abstraction in schemeHigher-Order and Symbolic Computation, 1993
- Revised 4 report on the algorithmic language schemeACM SIGPLAN Lisp Pointers, 1991
- Revised 3 report on the algorithmic language schemeACM SIGPLAN Notices, 1986
- Hygienic macro expansion1986
- Compiler Construction1984
- Revised report on the algorithmic language ALGOL 60Communications of the ACM, 1963