@node Standards
@chapter Standards

@menu
* Overview::
* Syntax::
* Evaluation and compilation::
* Types and classes::
* Data and control flow::
* Iteration::
* Objects::
* Structures::
* Conditions::
* Symbols::
* Packages::
* Numbers::
* Characters::
* Conses::
* Arrays::
* Strings::
* Sequences::
* Hash tables::
* Filenames::
* Files::
* Streams::
* Printer::
* Reader::
* System construction::
* Environment::
* Glossary::
@end menu

@include standards/overview.txi

@c No changes regarding the standard
@node Syntax
@section Syntax

@include standards/evaluation.txi
@include standards/types_and_classes.txi
@include standards/data_and_control_flow.txi

@node Iteration
@section Iteration

@node Objects
@section Objects

@node Structures
@section Structures

@node Conditions
@section Conditions

@node Symbols
@section Symbols

@node Packages
@section Packages

@node Numbers
@section Numbers
@c build option --with-ieee-fp={yes|no}
@c si::trap-fpe
@c si::nan
@c ext:{short,single,double,long}-float-{positive,negative}-infinity
@c ext:float-nan-p
@c ext:float-infinity-p
@c ext:float-nan-string
@c ext:float-infinity-string

@c make-random-state fixnum|array
@c ext:random-state-array
@c #$ macro

@node Characters
@section Characters

@node Conses
@section Conses

@node Arrays
@section Arrays

@node Strings
@section Strings

@node Sequences
@section Sequences

@node Hash tables
@section Hash tables
@c weakness in hash tables
@c ext:hash-table-content
@c ext:hash-table-fill
@c ext:hash-table-weakness

@node Filenames
@section Filenames

@node Files
@section Files

@node Streams
@section Streams

@node Printer
@section Printer

@node Reader
@section Reader
@c #$ - random state

@node System construction
@section System construction
@c ext:*load-hooks*, si::*load-search-list* variable:

@c EXT:*LOAD-HOOKS* is an assoc array of form ((TYPE . LOAD-FUNCTION)),
@c where TYPE is either a string (i.e "lisp", "fasb" etc.), wildcard
@c :WILD (matching any extension) and NIL for no
@c extension. LOAD-FUNCTION is a symbol of a function used to load the
@c file of the TYPE type.

@c If the argument SOURCE of LOAD is a stream, it is read as an ordinary
@c lisp source code, otherwise it should a pathname (or a string which
@c may be coerced to it).

@c If pathname doesn't have a directory, host nor device components,
@c then file is looked in the `:SEARCH-LIST` directories (defaulting to
@c si::*load-search-list*) and if found – loaded with LOAD (with
@c pathname with a directory merged from the search-list).

@c Otherwise (if a pathname does have a directory or the file can't be
@c found in the SEARCH-LIST) and the file type is neither NIL or :WILD,
@c then the assoc value of the TYPE is looked up in EXT:*LOAD-HOOKS* and
@c funcalled on the file (if the TYPE doesn't exist, we load a file as a source code).

@c If file type is NIL or :WILD, then we try to "guess" it's extension
@c trying extensions from the EXT:*LOAD-HOOKS* in order in which they
@c appear on the list. By default, first entry is (NIL
@c . SI:LOAD-SOURCE), so if there is a file without extension in the
@c directory, it will be treated as a source code. Otherwise we'll try
@c known extensions.

@node Environment
@section Environment

@node Glossary
@section Glossary
