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.
Michael Sperber is an expert in creating high-level software models for complex problem domains. These models allow developers and users to represent domain-specific knowledge directly in the software, rather than forcing them to use awkward technical models. R. Kent Dybvig is a professor in the computer science department at Indiana University. His primary research interest is programming languages. Matthew Flatt is associate professor in the school of computing at the University of Utah. He works on advanced programming languages, including language design, formal semantics, language implementation, and programming environments. Anton van Straaten is a software developer and consultant with a strong interest in the design and development of programming languages. He developed the award-winning software product Class(y), an object-oriented language extension to the Clipper database language.
Preface; Part I. Language: Description of the language; 1. Overview of Scheme; 2. Requirement levels; 3. Numbers; 4. Lexical syntax and datum syntax; 5. Semantic concepts; 6. Entry format; 7. Libraries; 8. Top-level programs; 9. Primitive syntax; 10. Expansion process; 11. Base library; Appendices; Part II. Standard Libraries: 12. Unicode; 13. Bytevectors; 14. List utilities; 15. Sorting; 16. Control structures; 17. Records; 18. Exceptions and conditions; 19. I/O; 20. File system; 21. Command-line access and exit values; 22. Arithmetic; 23. syntax-case; 24. Hashtables; 25. Enumerations; 26. Composite library; 27. Eval; 28. Mutable pairs; 29. Mutable strings; 30. R5RS compatibility; Part III. Non-Normative Appendices: A. Standard-conformant mode; B. Optional case insensitivity; C. Use of square brackets; D. Scripts; E. Source code representation; F. Use of library versions; G. Unique library names; References; Alphabetic index of definitions of concepts, keywords, and procedures.