This section defines the conventions employed in this text, how definitions will be laid out, the typefaces to be used, the meta-language used in descriptions and the naming conventions. A later section (8) contains definitions of the terms used in this text.
A standard function denotes an immutable top-lexical binding of the defined name. All the definitions in this text are bindings in some module except for the special form operators, which have no definition anywhere. All bindings and all the special form operators can be renamed.
Frequently, a class-descriptive name will be used in the argument list of a function description to indicate a restriction on the domain to which that argument belongs. In the case of a function, it is an error to call it with a value outside the specified domain. A generic function can be defined with a particular domain and/or range. In this case, any new methods must respect the domain and/or range of the generic function to which they are to be attached. The use of a class-descriptive name in the context of a generic function definition defines the intention of the definition, and is not necessarily a policed restriction.
The result-class of an operation, except in one case, refers to a primitive or a defined class described in this definition. The exception is for predicates. Predicates are defined to return either the empty list—written ()—representing the boolean value false, or any value other than (), representing true.
a-special-form-form: →result-class |
( a-special-form form-1 ... form-nopt ) |
description of structure and rôle of form-1.
description of structure and rôle of optional argument form-nopt.
A description of the result and, possibly, its result-class.
Any additional information defining the behaviour of a-special-form or the syntax category a-special-form-form.
Some examples of use of the special form and the behaviour that should result.
Cross references to related entries.
(a-function argument-1 ... argument-nopt) |
→ result-class |
information about the class or classes of argument-1.
information about the class or classes of the optional argument argument-n.
A description of the result and, possibly, its result-class.
Any additional information about the actions of a-function.
Some examples of calling the function with certain arguments and the result that should be returned.
Cross references to related entries.
means that argument-a of a-generic must be an
instance of <class-a> and that argument-a is one of the
arguments on which a-generic specializes. Furthermore,
each method defined on a-generic may specialize only on
a subclass of <class-a> for argument-a.
means that (i) argument-n is an instance of <object>, i.e. it is unconstrained, (ii) a-generic does not specialize on argument-n, (iii) no method on a-generic can specialize on argument-n.
A description of the result and, possibly, its class.
Any additional information about the actions of a-generic. This can take two forms depending on the function. This will probably be in general terms, since the actual behaviour will be determined by the methods.
Cross references to related entries.
(A method on a-generic with the following specialized arguments.)
means that argument-a of the method must be an instance
of <class-a>. Of course, this argument must be one which
was defined in a-generic as being open to specialization
and <class-a> must be a subclass of the class.
means that (i) argument-n is an instance of <object>, i.e. it is unconstrained, because a-generic does not specialize on argument-n.
A description of the result and, possibly, its class.
Any additional information about the actions of this method attached to a-generic.
Cross references to related entries.
Any additional information about the circumstances in which the condition will be signalled.
A description of the rôle of <a-class>.
A description of the constant of type <a-class>.