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 datums and datum values
        1.11  Libraries
        1.12  Top-level programs

    2  Numbers
        2.1  Numerical types
        2.2  Exactness
        2.3  Fixnums and flonums
        2.4  Implementation restrictions
        2.5  Infinities and NaNs
        2.6  Distinguished -0.0

    3  Lexical syntax and read syntax
        3.1  Notation
        3.2  Lexical syntax
            3.2.1  Formal account
            3.2.2  Line endings
            3.2.3  Whitespace and comments
            3.2.4  Identifiers
            3.2.5  Booleans
            3.2.6  Characters
            3.2.7  Strings
            3.2.8  Numbers
        3.3  Read syntax
            3.3.1  Formal account
            3.3.2  Pairs and lists
            3.3.3  Vectors
            3.3.4  Bytevectors
            3.3.5  Abbreviations

    4  Semantic concepts
        4.1  Programs and libraries
        4.2  Variables, keywords, and regions
        4.3  Exceptional situations
        4.4  Argument and subform checking
        4.5  Safety
        4.6  Boolean values
        4.7  Multiple return values
        4.8  Storage model
        4.9  Proper tail recursion
        4.10  Dynamic environment

    5  Notation and terminology
        5.1  Requirement levels
        5.2  Entry format
            5.2.1  Syntax entries
            5.2.2  Procedure entries
            5.2.3  Other kinds of entries
            5.2.4  Equivalent entries
        5.3  Evaluation examples
        5.4  Unspecified behavior
        5.5  Exceptional situations
        5.6  Naming conventions
        5.7  Syntax violations

    6  Libraries
        6.1  Library form
        6.2  Import and export levels
        6.3  Primitive syntax
            6.3.1  Primitive expression types
            6.3.2  Macros
        6.4  Examples

    7  Top-level programs
        7.1  Top-level program syntax
        7.2  Top-level program semantics

    8  Expansion process

    9  Base library
        9.1  Exported identifiers
        9.2  Base types
        9.3  Definitions
            9.3.1  Variable definitions
            9.3.2  Syntax definitions
        9.4  Bodies and sequences
        9.5  Expressions
            9.5.1  Quotation
            9.5.2  Procedures
            9.5.3  Conditionals
            9.5.4  Assignments
            9.5.5  Derived conditionals
            9.5.6  Binding constructs
            9.5.7  Sequencing
        9.6  Equivalence predicates
        9.7  Procedure predicate
        9.8  Generic arithmetic
            9.8.1  Propagation of exactness and inexactness
            9.8.2  Representability of infinities and NaNs
            9.8.3  Semantics of common operations
                9.8.3.1  Integer division
                9.8.3.2  Transcendental functions
            9.8.4  Numerical operations
                9.8.4.1  Numerical type predicates
                9.8.4.2  Generic conversions
                9.8.4.3  Arithmetic operations
                9.8.4.4  Numerical Input and Output
        9.9  Booleans
        9.10  Pairs and lists
        9.11  Symbols
        9.12  Characters
        9.13  Strings
        9.14  Vectors
        9.15  Errors and violations
        9.16  Control features
        9.17  Iteration
        9.18  Quasiquotation
        9.19  Binding constructs for syntactic keywords
        9.20  Macro transformers
        9.21  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