Higher-Order and Symbolic Computation

, Volume 11, Issue 1, pp 7–105

Revised5 Report on the Algorithmic Language Scheme

  • H. Abelson
  • R.K. Dybvig
  • C.T. Haynes
  • G.J. Rozas
  • N.I. AdamsIV
  • D.P. Friedman
  • E. Kohlbecker
  • G.L. SteeleJr.
  • D.H. Bartley
  • R. Halstead
  • D. Oxley
  • G.J. Sussman
  • G. Brooks
  • C. Hanson
  • K.M. Pitman
  • M. Wand
Article

Abstract

The report gives a defining description of the programming language Scheme. Scheme 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 styles, find convenient expression in Scheme.

The introduction offers a brief history of the language and of the report.

The first three chapters present the fundamental ideas of the language and describe the notational conventions used for describing the language and for writing programs in the language.

Sections 5 and 6 describe the syntax and semantics of expressions, programs, and definitions.

Section 7 describes Scheme's built-in procedures, which include all of the language's data manipulation and input/output primitives.

Section 8 provides a formal syntax for Scheme written in extended BNF, along with a formal denotational semantics. An example of the use of the language follows the formal syntax and semantics.

The report concludes with a list of references and an alphabetic index and is followed by a short list of clarifications and corrections.

Scheme Lisp programming languages 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Abelson, Harold and Sussman, Gerald Jay with Sussman, Julie. Structure and Interpretation of Computer Programs, 2nd edition. MIT Press, Cambridge, 1996.Google Scholar
  2. 2.
    Bawden, Alan and Rees, Jonathan. Syntactic closures. In Proceedings of the ACM Symposium on Lisp and Functional Programming, 1988, pp. 86–95.Google Scholar
  3. 3.
    Burger, Robert G. and Dybvig, R. Kent. Printing floating-point numbers quickly and accurately. In Proceedings of the ACMSIGPLAN Conference on Programming Language Design and Implementation, 1996, pp. 108–116.Google Scholar
  4. 4.
    Clinger, William (Ed.). The revised report on Scheme, or an uncommon Lisp. MIT Artificial Intelligence Memo 848, Aug. 1985. Also published as Computer Science Department Technical Report 174, Indiana University, June 1985.Google Scholar
  5. 5.
    Clinger, William. How to read floating point numbers accurately. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation. Proceedings published as SIGPLAN Notices 25(6): 92–101, June 1990.Google Scholar
  6. 6.
    Clinger, William and Rees, Jonathan (Eds.). The revised4 report on the algorithmic language Scheme. ACM Lisp Pointers 4(3):1–55, 1991.Google Scholar
  7. 7.
    Clinger, William and Rees, Jonathan. Macros that work. In Proceedings of the ACM Conference on Principles of Programming Languages, 1991, pp. 155–162.Google Scholar
  8. 8.
    Clinger, William. Proper tail recursion and space efficiency. To appear in Proceedings of the ACMConference on Programming Language Design and Implementation, June 1998.Google Scholar
  9. 9.
    Dybvig, R. Kent, Hieb, Robert, and Bruggeman, Carl. Syntactic abstraction in Scheme. Lisp and Symbolic Computation 5(4):295–326, 1993.Google Scholar
  10. 10.
    Fessenden, Carol, Clinger, William, Friedman, Daniel P., and Haynes, Christopher. Scheme 311 version 4 reference manual. Indiana University Computer Science Technical Report 137, Feb. 1983. Superseded by [11].Google Scholar
  11. 11.
    Friedman, D., Haynes, C., Kohlbecker, E., and Wand, M. Scheme 84 interim reference manual. Indiana University Computer Science Technical Report 153, Jan. 1985.Google Scholar
  12. 12.
    IEEE Standard 754-1985. IEEE Standard for Binary Floating-Point Arithmetic. IEEE, New York, 1985.Google Scholar
  13. 13.
    IEEE Standard 1178-1990. IEEE Standard for the Scheme Programming Language. IEEE, New York, 1991.Google Scholar
  14. 14.
    Kohlbecker, Eugene E., Jr. Syntactic extensions in the programming language lisp. PhD thesis, Indiana University, Aug. 1986.Google Scholar
  15. 15.
    Kohlbecker, Eugene E., Jr., Friedman, Daniel P., Felleisen, Matthias, and Duba, Bruce. Hygienic macro expansion. In Proceedings of the ACM Conference on Lisp and Functional Programming, 1986, pp. 151–161.Google Scholar
  16. 16.
    Landin, Peter. A correspondence between Algol 60 and Church's lambda notation: Part I. Communications of the ACM 8(2): 89–101, Feb. 1965.Google Scholar
  17. 17.
    MIT Department of Electrical Engineering and Computer Science. Scheme manual, 7th edition. Sept. 1984.Google Scholar
  18. 18.
    Naur, Peter, et al. Revised report on the algorithmic language Algol 60. Communications of the ACM 6(1):1–17, Jan. 1963.Google Scholar
  19. 19.
    Penfield, Paul, Jr. Principal values and branch cuts in complex APL. In APL Conference Proceedings, ACM SIGAPL, San Francisco. Proceedings published as APL Quote Quad 12(1):248–256, ACM, Sept. 1981.Google Scholar
  20. 20.
    Pitman, Kent M. The revised MacLisp manual (Saturday evening edition). MIT Laboratory for Computer Science Technical Report 295, May 1983.Google Scholar
  21. 21.
    Rees, Jonathan A. and Adams IV, Norman I. T: A dialect of Lisp or, lambda: The ultimate software tool. In Conference Record of the ACM Symposium on Lisp and Functional Programming, 1982, pp. 114–122.Google Scholar
  22. 22.
    Rees, Jonathan A., Adams IV, Norman I, and Meehan, J.R. The T manual, 4th edition. Yale University Computer Science Department, Jan. 1984.Google Scholar
  23. 23.
    Rees, Jonathan and Clinger, William (Eds.). The revised3 report on the algorithmic language Scheme, ACM SIGPLAN Notices 21(12):37–79, Dec. 1986.Google Scholar
  24. 24.
    Reynolds, John. Definitional interpreters for higher order programming languages. ACM Conference Proceedings, pp. 717–740, ACM, 1972.Google Scholar
  25. 25.
    Steele, Guy Lewis, Jr. and Sussman, Gerald Jay. The revised report on Scheme, a dialect of Lisp. MIT Artificial Intelligence Memo 452, Jan. 1978.Google Scholar
  26. 26.
    Steele, Guy Lewis, Jr. Rabbit: A compiler for Scheme. MIT Artificial Intelligence Laboratory Technical Report 474, May 1978.Google Scholar
  27. 27.
    Steele, Guy Lewis, Jr. Common Lisp: The Language, second edition. Digital Press, Burlington MA, 1990.Google Scholar
  28. 28.
    Sussman, Gerald Jay and Steele, Guy Lewis, Jr. Scheme: An interpreter for extended lambda calculus. MIT Artificial Intelligence Memo 349, Dec. 1975.Google Scholar
  29. 29.
    Stoy, Joseph E. Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory, MIT Press, Cambridge, 1977.Google Scholar
  30. 30.
    Texas Instruments, Inc. TI Scheme Language Reference Manual. Preliminary version 1.0, Nov. 1985.Google Scholar

References

  1. 1.
    Filinski, Andrzej. Representing Monads. In Proceedings of the 1994 ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 446–457.Google Scholar

Copyright information

© Kluwer Academic Publishers 1998

Authors and Affiliations

  • H. Abelson
  • R.K. Dybvig
  • C.T. Haynes
  • G.J. Rozas
  • N.I. AdamsIV
  • D.P. Friedman
  • E. Kohlbecker
  • G.L. SteeleJr.
  • D.H. Bartley
  • R. Halstead
  • D. Oxley
  • G.J. Sussman
  • G. Brooks
  • C. Hanson
  • K.M. Pitman
  • M. Wand

There are no affiliations available

Personalised recommendations