skip to main content
Skip header Section
Revised [6] Report on the Algorithmic Language SchemeJune 2010
Publisher:
  • Cambridge University Press
  • 40 W. 20 St. New York, NY
  • United States
ISBN:978-0-521-19399-3
Published:07 June 2010
Pages:
302
Skip Bibliometrics Section
Bibliometrics
Skip Abstract Section
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, are enough to form a practical and efficient programming language that is flexible enough to support most of the major programming paradigms in use today. This book contains the three parts comprising 'R6RS', the sixth revision of a series of reports describing the programming language Scheme. The book is divided into parts: a description of the language itself, a description of the standard libraries and non-normative appendices. Early chapters introduce Scheme and later chapters act as a reference manual. This is an important report for programmers that work with or want to learn about the Scheme language.

Cited By

  1. ACM
    Flatt M, Derici C, Dybvig R, Keep A, Massaccesi G, Spall S, Tobin-Hochstadt S and Zeppieri J (2019). Rebuilding racket on chez scheme (experience report), Proceedings of the ACM on Programming Languages, 3:ICFP, (1-15), Online publication date: 26-Jul-2019.
  2. ACM
    Lee J, Kim Y, Song Y, Hur C, Das S, Majnemer D, Regehr J and Lopes N (2017). Taming undefined behavior in LLVM, ACM SIGPLAN Notices, 52:6, (633-647), Online publication date: 14-Sep-2017.
  3. ACM
    Lee J, Kim Y, Song Y, Hur C, Das S, Majnemer D, Regehr J and Lopes N Taming undefined behavior in LLVM Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation, (633-647)
  4. ACM
    Serrano A and Hage J Lightweight soundness for towers of language extensions Proceedings of the 2017 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, (23-34)
  5. ACM
    Adams M (2015). Towards the Essence of Hygiene, ACM SIGPLAN Notices, 50:1, (457-469), Online publication date: 11-May-2015.
  6. ACM
    Pombrio J and Krishnamurthi S (2015). Hygienic resugaring of compositional desugaring, ACM SIGPLAN Notices, 50:9, (75-87), Online publication date: 18-Dec-2015.
  7. ACM
    Pombrio J and Krishnamurthi S Hygienic resugaring of compositional desugaring Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming, (75-87)
  8. ACM
    Bauman S, Bolz C, Hirschfeld R, Kirilichev V, Pape T, Siek J and Tobin-Hochstadt S (2015). Pycket: a tracing JIT for a functional language, ACM SIGPLAN Notices, 50:9, (22-34), Online publication date: 18-Dec-2015.
  9. ACM
    Bauman S, Bolz C, Hirschfeld R, Kirilichev V, Pape T, Siek J and Tobin-Hochstadt S Pycket: a tracing JIT for a functional language Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming, (22-34)
  10. ACM
    Adams M Towards the Essence of Hygiene Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, (457-469)
  11. ACM
    Flatt M (2013). Submodules in racket, ACM SIGPLAN Notices, 49:3, (13-22), Online publication date: 5-Mar-2014.
  12. ACM
    Rafkind J and Flatt M (2012). Honu, ACM SIGPLAN Notices, 48:3, (122-131), Online publication date: 10-Apr-2013.
  13. ACM
    Flatt M Submodules in racket Proceedings of the 12th international conference on Generative programming: concepts & experiences, (13-22)
  14. ACM
    Jensen S, Jonsson P and Møller A Remedying the eval that men do Proceedings of the 2012 International Symposium on Software Testing and Analysis, (34-44)
  15. ACM
    Rafkind J and Flatt M Honu Proceedings of the 11th International Conference on Generative Programming and Component Engineering, (122-131)
  16. Klein C, Flatt M and Findler R (2012). The Racket virtual machine and randomized testing, Higher-Order and Symbolic Computation, 25:2-4, (209-253), Online publication date: 1-Dec-2012.
  17. ACM
    Atkinson K, Flatt M and Lindstrom G (2010). ABI compatibility through a customizable language, ACM SIGPLAN Notices, 46:2, (147-156), Online publication date: 26-Jan-2011.
  18. ACM
    Van Horn D and Might M (2011). Abstracting abstract machines, Communications of the ACM, 54:9, (101-109), Online publication date: 1-Sep-2011.
  19. ACM
    Yoo D, Schanzer E, Krishnamurthi S and Fisler K WeScheme Proceedings of the 16th annual joint conference on Innovation and technology in computer science education, (163-167)
  20. ACM
    Vardoulakis D and Shivers O (2011). Pushdown flow analysis of first-class control, ACM SIGPLAN Notices, 46:9, (69-80), Online publication date: 18-Sep-2011.
  21. ACM
    Vardoulakis D and Shivers O Pushdown flow analysis of first-class control Proceedings of the 16th ACM SIGPLAN international conference on Functional programming, (69-80)
  22. Klein C, McCarthy J, Jaconette S and Findler R A semantics for context-sensitive reduction semantics Proceedings of the 9th Asian conference on Programming Languages and Systems, (369-383)
  23. ACM
    Atkinson K, Flatt M and Lindstrom G ABI compatibility through a customizable language Proceedings of the ninth international conference on Generative programming and component engineering, (147-156)
  24. ACM
    Herzeel C and Costanza P Dynamic parallelization of recursive code Proceedings of the ACM international conference on Object oriented programming systems languages and applications, (377-396)
  25. ACM
    Herzeel C and Costanza P (2010). Dynamic parallelization of recursive code, ACM SIGPLAN Notices, 45:10, (377-396), Online publication date: 17-Oct-2010.
  26. Sperber M, Dybvig R, Flatt M, Van straaten A, Findler R and Matthews J (2009). Revised6 report on the algorithmic language scheme, Journal of Functional Programming, 19:S1, (1-301), Online publication date: 1-Aug-2009.
  27. Danvy O Towards compatible and interderivable semantic specifications for the scheme programming language, part I Semantics and algebraic specification, (162-185)
  28. ACM
    Adams M and Dybvig R (2008). Efficient nondestructive equality checking for trees and graphs, ACM SIGPLAN Notices, 43:9, (179-188), Online publication date: 27-Sep-2008.
  29. ACM
    Adams M and Dybvig R Efficient nondestructive equality checking for trees and graphs Proceedings of the 13th ACM SIGPLAN international conference on Functional programming, (179-188)
  30. ACM
    Bieniusa A, Degen M, Heidegger P, Thiemann P, Wehr S, Gasbichler M, Sperber M, Crestani M, Klaeren H and Knauel E Htdp and dmda in the battlefield Proceedings of the 2008 international workshop on Functional and declarative programming in education, (1-12)
  31. ACM
    Clinger W Scheme@33 Celebrating the 50th Anniversary of Lisp, (1-5)
  32. Avanzini M and Moser G Complexity analysis by rewriting Proceedings of the 9th international conference on Functional and logic programming, (130-146)
Contributors
  • University of Tübingen
  • Cisco Systems
  • The University of Utah
  • Northwestern University
  • The University of Chicago

Recommendations

Jeffrey B. Putnam

Both programming languages and program libraries need specifications and documentation, although it is probably safe to say that programming language specifications are far more carefully written than those that are written for libraries. This arises for any number of reasons, the most important of which may be that any language that will be implemented more than once needs to have its syntax and semantics sufficiently well defined to allow programs (and libraries in particular) to run in multiple implementations and produce the same answer. Furthermore, programming skills do not always translate to documentation skills. Specifications and documentation can run the gamut from terse, minimal, and exact to verbose and even chatty. Both sides have their problems-for example, short and precise documentation may not be easy to understand or interpret, and size often makes it harder to find answers. And, of course, there are often errors. This book-which is available in both print and for free online (http://r6rs.org)-is the sixth iteration of specifications for the programming language Scheme and its standard libraries. Scheme has been around (in varying forms) since 1975, and while there have been significant changes, it still retains many of the same design principles. The book consists of three parts. Part 1 includes language specifications and appendices, including one that provides a formal operational semantics for a significant subset of the language. Part 2 offers a description of the standard libraries. The final part consists of a few short, informative appendices. This book should be of interest to three main groups: those who are interested in programming language design and implementation (and who are probably quite aware of it already), those who write specifications or documentation for libraries, and those who read such documentation. This is an excellent example of how to do documentation well. Though it tends to be toward the terse end of the spectrum-the complete language specification is less than 150 pages-there are plenty of good examples. While it is clearly not a textbook, it could be used productively as a text for advanced students. From it, they can see how good specifications are written, explore programming language semantics, and learn how to read formal descriptions (this is not often touched upon, but it might be useful to know). Given this book and a working implementation of the standard, students can explore the different parts of the specification and how they should be interpreted. (Such a study would also benefit from using the implementation of the operational semantics available in executable form.) The only major problem with the book is that the index is a bit lacking. However, this probably only affects the print version since it is relatively easy to search electronic texts. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.