Revised5 Report on the Algorithmic Language Scheme
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.
Unable to display preview. Download preview PDF.
- 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.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.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.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.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.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.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.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.Dybvig, R. Kent, Hieb, Robert, and Bruggeman, Carl. Syntactic abstraction in Scheme. Lisp and Symbolic Computation 5(4):295–326, 1993.Google Scholar
- 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 .Google Scholar
- 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.IEEE Standard 754-1985. IEEE Standard for Binary Floating-Point Arithmetic. IEEE, New York, 1985.Google Scholar
- 13.IEEE Standard 1178-1990. IEEE Standard for the Scheme Programming Language. IEEE, New York, 1991.Google Scholar
- 14.Kohlbecker, Eugene E., Jr. Syntactic extensions in the programming language lisp. PhD thesis, Indiana University, Aug. 1986.Google Scholar
- 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.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.MIT Department of Electrical Engineering and Computer Science. Scheme manual, 7th edition. Sept. 1984.Google Scholar
- 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.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.Pitman, Kent M. The revised MacLisp manual (Saturday evening edition). MIT Laboratory for Computer Science Technical Report 295, May 1983.Google Scholar
- 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.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.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.Reynolds, John. Definitional interpreters for higher order programming languages. ACM Conference Proceedings, pp. 717–740, ACM, 1972.Google Scholar
- 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.Steele, Guy Lewis, Jr. Rabbit: A compiler for Scheme. MIT Artificial Intelligence Laboratory Technical Report 474, May 1978.Google Scholar
- 27.Steele, Guy Lewis, Jr. Common Lisp: The Language, second edition. Digital Press, Burlington MA, 1990.Google Scholar
- 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.Stoy, Joseph E. Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory, MIT Press, Cambridge, 1977.Google Scholar
- 30.Texas Instruments, Inc. TI Scheme Language Reference Manual. Preliminary version 1.0, Nov. 1985.Google Scholar
- 1.Filinski, Andrzej. Representing Monads. In Proceedings of the 1994 ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 446–457.Google Scholar