Contents

    1  Historical background

    2  Requirement levels

    3  Numbers
        3.1  Infinities, NaNs
        3.2  Distinguished -0.0

    4  Lexical syntax and datum syntax
        4.1  Symbol and identifier syntax
            4.1.1  Escaped symbol constituents
            4.1.2  Case sensitivity
            4.1.3  Identifiers starting with ->
        4.2  Comments
        4.3  Future extensions

    5  Semantic concepts
        5.1  Argument and subform checking
        5.2  Safety
        5.3  Proper tail recursion

    6  Entry format

    7  Libraries
        7.1  Syntax
        7.2  Local import
        7.3  Local modules
        7.4  Fixed import and export clauses
        7.5  Instantiation and initialization
        7.6  Immutable exports
        7.7  Compound library names
        7.8  Versioning
        7.9  Treatment of different versions

    8  Top-level programs

    9  Primitive syntax
        9.1  Unspecified evaluation order

    10  Expansion process

    11  Base library
        11.1  Library organization
        11.2  Bodies
        11.3  Export levels
        11.4  Binding forms
        11.5  Equivalence predicates
            11.5.1  Treatment of procedures
            11.5.2  Equivalence of NaNs
            11.5.3  eq?
        11.6  Arithmetic
            11.6.1  Full numerical tower
            11.6.2  IEEE-754 conformance
            11.6.3  Transcendental functions
            11.6.4  Domains of numerical predicates
            11.6.5  Numerical types
            11.6.6  Closure Properties
                11.6.6.1  Representation-specific operations
                11.6.6.2  Flow analysis
                11.6.6.3  div and mod
            11.6.7  Numerical predicates
            11.6.8  Notes on individual procedures
                    round
                    sqrt
                    number->string
        11.7  Characters and strings
        11.8  Symbols
        11.9  Control features
            11.9.1  call-with-current-continuation and dynamic-wind
            11.9.2  Multiple values
        11.10  Macro transformers
            11.10.1  syntax-rules

    12  Formal semantics

    13  Unicode
        13.1  Case mapping

    14  Bytevectors

    15  List utilities
        15.1  Notes on individual procedures
                    memp, member, memv, and memq

    16  Sorting

    17  Control structures
        17.1  when and unless
        17.2  case-lambda

    18  Records
        18.1  Syntactic layer
        18.2  Positional access and field names
        18.3  Lack of multiple inheritance
        18.4  Constructor mechanism
        18.5  Sealed record types

    19  Conditions and exceptions
        19.1  Exceptions
        19.2  Conditions

    20  I/O
        20.1  File names
        20.2  File options
        20.3  End-of-line styles
        20.4  Error-handling modes
        20.5  Binary and textual ports
        20.6  File positions
        20.7  Freshness of standard ports
        20.8  Argument conventions

    21  File system

    22  Arithmetic
        22.1  Fixnums and flonums
        22.2  Bitwise operations
        22.3  Notes on individual procedures
                    fl+ and fl*
                    real->flonum
                    flround
                    flsqrt

    23  syntax-case

    24  Hashtables
        24.1  Caching
        24.2  Immutable hashtables
        24.3  Hash functions

    25  Enumerations

    26  Composite library

    27  Mutable pairs

    28  Mutable strings