Contents

    Introduction

    1  Overview of Scheme
        1.1  Basic types
                    Boolean values
                    Numbers
                    Characters
                    Strings
                    Symbols
                    Pairs and lists
                    Vectors
                    Procedures
        1.2  Expressions
        1.3  Variables and binding
        1.4  Definitions
        1.5  Forms
        1.6  Procedures
        1.7  Procedure calls and syntactic keywords
        1.8  Assignment
        1.9  Derived forms and macros
        1.10  Syntactic data and datum values
        1.11  Continuations
        1.12  Libraries
        1.13  Top-level programs

    2  Requirement levels

    3  Numbers
        3.1  Numerical tower
        3.2  Exactness
        3.3  Fixnums and flonums
        3.4  Implementation requirements
        3.5  Infinities and NaNs
        3.6  Distinguished -0.0

    4  Lexical syntax and datum syntax
        4.1  Notation
        4.2  Lexical syntax
            4.2.1  Formal account
            4.2.2  Line endings
            4.2.3  Whitespace and comments
            4.2.4  Identifiers
            4.2.5  Booleans
            4.2.6  Characters
            4.2.7  Strings
            4.2.8  Numbers
        4.3  Datum syntax
            4.3.1  Formal account
            4.3.2  Pairs and lists
            4.3.3  Vectors
            4.3.4  Bytevectors
            4.3.5  Abbreviations

    5  Semantic concepts
        5.1  Programs and libraries
        5.2  Variables, keywords, and regions
        5.3  Exceptional situations
        5.4  Argument checking
        5.5  Syntax violations
        5.6  Safety
        5.7  Boolean values
        5.8  Multiple return values
        5.9  Unspecified behavior
        5.10  Storage model
        5.11  Proper tail recursion
        5.12  Dynamic extent and dynamic environment

    6  Entry format
        6.1  Syntax entries
        6.2  Procedure entries
        6.3  Implementation responsibilities
        6.4  Other kinds of entries
        6.5  Equivalent entries
        6.6  Evaluation examples
        6.7  Naming conventions

    7  Libraries
        7.1  Library form
        7.2  Import and export levels
        7.3  Examples

    8  Top-level programs
        8.1  Top-level program syntax
        8.2  Top-level program semantics

    9  Primitive syntax
        9.1  Primitive expression types
        9.2  Macros

    10  Expansion process

    11  Base library
        11.1  Base types
        11.2  Definitions
            11.2.1  Variable definitions
            11.2.2  Syntax definitions
        11.3  Bodies and sequences
        11.4  Expressions
            11.4.1  Quotation
            11.4.2  Procedures
            11.4.3  Conditionals
            11.4.4  Assignments
            11.4.5  Derived conditionals
            11.4.6  Binding constructs
            11.4.7  Sequencing
        11.5  Equivalence predicates
        11.6  Procedure predicate
        11.7  Arithmetic
            11.7.1  Propagation of exactness and inexactness
            11.7.2  Representability of infinities and NaNs
            11.7.3  Semantics of common operations
                11.7.3.1  Integer division
                11.7.3.2  Transcendental functions
            11.7.4  Numerical operations
                11.7.4.1  Numerical type predicates
                11.7.4.2  Generic conversions
                11.7.4.3  Arithmetic operations
                11.7.4.4  Numerical Input and Output
        11.8  Booleans
        11.9  Pairs and lists
        11.10  Symbols
        11.11  Characters
        11.12  Strings
        11.13  Vectors
        11.14  Errors and violations
        11.15  Control features
        11.16  Iteration
        11.17  Quasiquotation
        11.18  Binding constructs for syntactic keywords
        11.19  Macro transformers
        11.20  Tail calls and tail contexts

    A  Formal semantics
        A.1  Background
        A.2  Grammar
        A.3  Quote
        A.4  Multiple values
        A.5  Exceptions
        A.6  Arithmetic and basic forms
        A.7  Lists
        A.8  Eqv
        A.9  Procedures and application
        A.10  Call/cc and dynamic wind
        A.11  Letrec
        A.12  Underspecification

    B  Sample definitions for derived forms

    C  Additional material

    D  Example

    E  Language changes

    Alphabetic index of definitions of concepts, keywords, and procedures