Scheme(ID:694/sch003)


(originally "Schemer", by analogy with Planner and Conniver.) G.L. Steele & G.J. Sussman, 1975. A LISP dialect, small and uniform, with clean semantics. Scheme is applicative-order and lexically scoped, and treats both functions and continuations as first-class objects.

is a statically scoped and properly tail-recursive dialect of the LISP programming language invented by Guy Lewis Steele Jr. and Gerald Jay Sussman. It was designed to have an exceptionally clear and simple semantics and few different ways to form expressions. A wide variety of programming paradigms, including imperative, functional, and message passing style, find convenient expression in SCHEME.
SCHEME has lexical scoping, uniform evaluation rules, and uniform treatment of data types. It does not have the concept of pointers, uninitialized variables, specialized looping constructs, or explicit storage management. In SCHEME all data types are equal. What one can do to one data type, one can do to all data types. There are seven kinds of expressions: constant, variable reference, procedure creation, procedure application, conditional, assignment, and sequence.  Numbers are especially interesting in that an integer is a rational and a real is a complex.
SCHEME requires no looping constructs. Any function which calls itself in the "Tail" position is just a loop.  
SCHEME has several important advantages: it's elegantly simple in that regular structure and trivial syntax avoids "special case" confusion. It's expressiveness means that one spends little time trying to work around the language, it concentrates on what they want say rather than on how to say it. It supports a variety of styles (including OO; allows users to better match their solution style to the style of the problems to be solved.  


Structures:
Related languages
Actors => Scheme   inspired Influence
CONNIVER => Scheme   Evolution of
microPLANNER => Scheme   Evolution of
Scheme => ABCL   Derivation of
Scheme => Alfl   Written using
Scheme => Alonzo   Influence
Scheme => APROL   Derivation of
Scheme => Bigloo   Extension of
Scheme => Black   Augmentation of
Scheme => c@t   Extension of
Scheme => Chez Scheme   Implementation
Scheme => Common LISP   Evolution of
Scheme => CPS   intermediate language for
Scheme => C-Scheme   Implementation of
Scheme => Daisy   Evolution of
Scheme => Dylan   Evolution of
Scheme => Elk   Implementation
Scheme => EuLisp   Influence
Scheme => FX-87   Based on
Scheme => Gambit   Variant
Scheme => Hot Dog   Implementation
Scheme => INFER   Dialect of
Scheme => ISIS   Influence
Scheme => LAML   Extension of
Scheme => LIAR   Compiled by
Scheme => Meroon   Based on
Scheme => MultiLisp   Extension of
Scheme => Oaklisp   Extension of
Scheme => Orbit   Subsystem
Scheme => PICO   Subset
Scheme => Proxy   Written using
Scheme => RABBIT   Compiled by
Scheme => S++   Extension of
Scheme => Scheme 48   Implementation
Scheme => Scheme-Linda   Augmentation of
Scheme => SchemeXerox   Implementation
Scheme => STING   Dialect of
Scheme => T   Extension of
Scheme => XSCHEME   Augmentation of

References:
  • Sussman, Gerald J. and Guy L. Steele, Jr "An Interpreter for Extended Lambda Calculus" MIT AIM-349 December 1975 view details Abstract: Inspired by ACTORS [Greif and Hewitt] [Smith and Hewitt], we have implemented an interpreter for a LISP-like language, SCHEME, based on the lambda calculus [Church], but extended for side effects, multiprocessing, and process synchronization. The purpose of this implementation is tutorial. We wish to: (1) alleviate the confusion caused by Micro-PLANNER, CONNIVER, etc. by clarifying the embedding of non-recursive control structures in a recursive host language like LISP. (2) explain how to use these control structures, independent of such issues as pattern matching and data base manipulation. (3) have a simple concrete experimental domain for certain issues of programming semantics and style. pdf
  • Steele, G.L. et al, The Revised Report on Scheme, AI Memo 452, MIT, Jan 1978. view details
  • Sussman and Steele "Scheme: An interpreter for extended LAMBDA calculus" MIT AI Memo 349 December 1978 view details
  • Kupka, I. and Wilsing, N. "Conversational Languages" John Wiley, 1980 view details
  • Clinger, W. "The Revised Revised Report on the Algorithmic Language Scheme", AI Memo 848, MIT Aug 1985. view details
  • Rees J. et al, "The Revised^3 Report on the Algorithmic Language Scheme" view details
          in SIGPLAN Notices 21(12) December 1986 view details
  • George Springer, Daniel P. Friedman, "Scheme and the Art of Programming", McGraw-Hill, New York, 1989 view details
          in SIGPLAN Notices 21(12) December 1986 view details
  • [IEEE] IEEE Standard for the Scheme Programming Language, ISBN 1-55937-125-0. IEEE P1178-1990, view details
          in SIGPLAN Notices 21(12) December 1986 view details
  • Clinger, W. et al, "The Revised^4 Report on the Algorithmic Language Scheme" MIT (Nov 1991) view details
          in SIGPLAN Notices 21(12) December 1986 view details
  • Spinellis, Diomidis D., "Programming Paradigms as Object Classes: A Structuring Mechanism for Multiparadigm Programming", PhD Thesis 1994 University of London view details
          in SIGPLAN Notices 21(12) December 1986 view details
  • Dick Grune's Annotated Literature Lists view details Extract: Review of language
    R. Kent Dybvig, "The Scheme Programming Language", Prentice-Hall, Englewood Cliffs, N.J., 1987, pp. 242.
    Scheme is dialect of Lisp featuring static scoping, first-class (typed) procedures, objects and continuations. It still suffers from parenthitis. There is a function \* which allows a pattern matcher for new syntax to be introduced. Much of the language can be (is?) defined in this way.
    The book assumes knowledge of Lisp or at least of programming and list processing. It is a straightforward explanation of Scheme, for the practical programmer. Extract: Review of language
    James R. McGraw, "The VAL language: description and analysis", ACM TOPLAS, 4, #1, pp. 44-82. Jan. 1982,

    VAL is a side effect free language, based on expressions and non-recursive functions. Normally the language is single-definition, but in a fairly complex for...do...iter construct redefinition is allowed to handle iteration. Its main features are explained using a single example, quad integration.
          in SIGPLAN Notices 21(12) December 1986 view details
  • Library of Congress Subject Headings S34 view details
          in SIGPLAN Notices 21(12) December 1986 view details
    Resources

    • list:scheme@mc.lcs.mit.edu

    • repository:
      "

    • SCM interpreter in C, and Hobbit2 compiler (compiles to C), for Amiga, Atari-ST, Mac, MS-DOS, NOS/VE, VAX/VMS,
      "

    • MIT-Scheme, Liar compiler
      "

    • Gambit compiler for Amiga
      "

    • Scheme In One Defun, George Carrette
      "

    • elk for Suns
      "

    • compiler for 68K's
      "