Contents

    1  Introduction

    2  Basic mode of operation

    3  Using the compiler
        3.1  Command line format
        3.2  Runtime options
        3.3  An example
        3.4  Extending the compiler
        3.5  Distributing compiled C files

    4  Using the interpreter
        4.1  Command line format
        4.2  Writing Scheme scripts
        4.3  Toplevel commands
        4.4  Macros and procedures implemented in the interpreter

    5  Supported language
        5.1  Deviations from the standard
        5.2  Extensions to the standard
        5.3  Non standard read syntax
        5.4  Non-standard macros and special forms
            5.4.1  Binding forms for optional arguments
            5.4.2  Other binding forms
            5.4.3  Substitution forms and macros
            5.4.4  Conditional forms
            5.4.5  Record structures
            5.4.6  Other forms
        5.5  Declarations
        5.6  Parameters
        5.7  Unit: library
            5.7.1  Arithmetic
            5.7.2  Input/Output
            5.7.3  Files
            5.7.4  String ports
            5.7.5  Feature identifiers
            5.7.6  Keywords
            5.7.7  Exceptions
            5.7.8  Environment information and system interface
            5.7.9  Execution time
            5.7.10  Interrupts and error-handling
            5.7.11  Garbage collection
            5.7.12  Other control structures
            5.7.13  Generating uninterned symbols
            5.7.14  Input/Output
            5.7.15  User-defined named characters
            5.7.16  Vectors
            5.7.17  The ``unspecified'' value
            5.7.18  call/cc
        5.8  Unit: eval
            5.8.1  Loading code
            5.8.2  Read-eval-print loop
            5.8.3  Macros
            5.8.4  Extension libraries
            5.8.5  Reader extensions
            5.8.6  Eval
        5.9  Unit: extras
            5.9.1  Lists
            5.9.2  String-port extensions
            5.9.3  Formatted output
            5.9.4  Hash tables
            5.9.5  Queues
            5.9.6  Sorting
            5.9.7  Random numbers
            5.9.8  Input/Output extensions
            5.9.9  Strings
            5.9.10  Combinators
            5.9.11  Binary searching
        5.10  Unit: srfi-1
        5.11  Unit: srfi-4
        5.12  Unit: srfi-13
        5.13  Unit: srfi-14
        5.14  Unit: srfi-25
        5.15  Unit: match
        5.16  Unit: regex
        5.17  Unit: syntax-case
        5.18  Unit: srfi-18
        5.19  Unit: format
        5.20  Unit: posix
            5.20.1  Directories
            5.20.2  Pipes
            5.20.3  Fifos
            5.20.4  File descriptors and low-level I/O
            5.20.5  Retrieving file attributes
            5.20.6  Changing file attributes
            5.20.7  Processes
            5.20.8  Symbolic links
            5.20.9  Permissions, owners, users and groups
            5.20.10  Record locking
            5.20.11  Signal handling
            5.20.12  Environment access
            5.20.13  Memory mapped I/O
            5.20.14  Time routines
            5.20.15  ``Raw'' exit
            5.20.16  ERRNO values
            5.20.17  Finding files
            5.20.18  Getting the hostname and system information
            5.20.19  Setting a files buffering mode
            5.20.20  Terminal ports
            5.20.21  How Scheme procedures relate to UNIX C functions
        5.21  Unit: script-utils
            5.21.1  Pathname operations
            5.21.2  Temporary files
            5.21.3  Deleting a file without signalling an error
            5.21.4  Iterating over input lines and files
        5.22  Unit: tcp
        5.23  Unit: srfi-37
        5.24  Unit: lolevel
            5.24.1  Foreign pointers
            5.24.2  Extending procedures with data
            5.24.3  Bytevectors
            5.24.4  Data in unmanaged memory
            5.24.5  Locatives
            5.24.6  Accessing toplevel variables
            5.24.7  Low-level data access
            5.24.8  Procedure-call- and variable reference hooks
            5.24.9  Magic
        5.25  Unit: tinyclos
            5.25.1  Defining forms
            5.25.2  Base language
            5.25.3  Introspection
            5.25.4  Intercessory protocol
            5.25.5  Additional protocol
            5.25.6  Utility procedures
            5.25.7  Builtin classes

    6  Interface to external functions and variables
        6.1  Accessing external objects
        6.2  Foreign type specifiers
        6.3  Entry points
        6.4  Callbacks
        6.5  Locations
        6.6  Other support procedures
        6.7  The ``Easy'' Foreign Function Interface
            6.7.1  General operation
            6.7.2  Pseudo declarations
            6.7.3  Grammar
            6.7.4  C notes
            6.7.5  C++ notes
        6.8  C interface

    7  Extensions and chicken-setup
        7.1  setup scripts
        7.2  An Example
        7.3  Notes

    8  Additional files
            8.0.1  srfi-13-syntax.scm
            8.0.2  highlevel-macros.scm
            8.0.3  moremacros.scm
            8.0.4  default-entry-points.scm
            8.0.5  test-infrastructure.scm
                8.0.5.1  The Test Package Macro API
                8.0.5.2  The Test Case Macro API
                8.0.5.3  The Expectation Macro API
                8.0.5.4  Result Object API
                8.0.5.5  Test Package Result Object API
                8.0.5.6  Test Case Result Object API
                8.0.5.7  Expect Result Object API: Single Clause Style Expectation
                8.0.5.8  Expect Result Object API: Equivalence Style Expectation
                8.0.5.9  Expect Result Object API: Tolerance Style Expectation
                8.0.5.10  Various Helper API
                8.0.5.11  Termination API
                8.0.5.12  Destructor Object API
                8.0.5.13  Todo API
                8.0.5.14  Gloss API
                8.0.5.15  Skip API
                8.0.5.16  Side Effect API
                8.0.5.17  Miscellaneous API
                8.0.5.18  Analysis of the Result Tree
                8.0.5.19  Output Generation API
                8.0.5.20  Example Usages of the Test Suite Infrastructure

    9  Data Representation

    10  Bugs and limitations

    11  Acknowledgements

    Bibliography

    Index