Next: Evaluation examples, Previous: Error situations and unspecified behavior, Up: Notation and terminology [Index]
Chapters Expressions and Standard procedures are organized into entries. Each entry describes one language feature or a group of related features, where a feature is either a syntactic construct or a procedure. An entry begins with one or more header lines of the form
category: | template |
for identifiers in the base library, or
name library category: | template |
where name is the short name of a library as defined in Standard Libraries.
If category is “syntax,” the entry describes an expression type, and the template gives the syntax of the expression type. Components of expressions are designated by syntactic variables, which are written using angle brackets, for example ⟨expression⟩ and ⟨variable⟩. Syntactic variables are intended to denote segments of program text; for example, ⟨expression⟩ stands for any string of characters which is a syntactically valid expression. The notation
⟨thing1⟩ …
indicates zero or more occurrences of a ⟨thing⟩, and
⟨thing1⟩ ⟨thing2⟩ …
indicates one or more occurrences of a ⟨thing⟩.
If category is “auxiliary syntax,” then the entry describes a syntax binding that occurs only as part of specific surrounding expressions. Any use as an independent syntactic construct or variable is an error.
If category is “procedure,” then the entry describes a procedure, and the header line gives a template for a call to the procedure. Thus the header line
procedure: | vector-ref vector k |
indicates that the procedure bound to the vector-ref
variable takes
two arguments, a vector vector and an exact non-negative integer
k (see below). The header lines
procedure: | make-vector k |
procedure: | make-vector k fill |
indicate that the make-vector
procedure must be defined to take
either one or two arguments.
It is an error for a procedure to be presented with an argument
that it is not specified to handle. For succinctness, we follow
the convention that if an argument name is also the name of a type
listed in Disjointness of types, then it is an error if that
argument is not of the named type. For example, the header line for
vector-ref
given above dictates that the first argument to
vector-ref
is a vector. The following naming conventions also
imply type restrictions:
association list (list of pairs)
boolean value (#t
or #f
)
exact integer 0 ≤ byte < 256
bytevector
character
exact non-negative integer
exact non-negative integer
alphabetic character
list (see Pairs and lists)
integer
any object
pair
port
procedure
rational number
exact non-negative integer
string
symbol
zero-argument procedure
vector
real number
real number
complex number
The names start and end are used as indexes into strings, vectors, and bytevectors. Their use implies the following:
Next: Evaluation examples, Previous: Error situations and unspecified behavior, Up: Notation and terminology [Index]