next prev up top content index

12 The Built-In Functions


This chapter contains an entry for each function defined by Dylan.

The functions described below are annotated either as an "open generic function" or as a "function."

A function specified as an "open generic function" can be extended through the addition of programmer defined methods. The signature of the generic function constrains which methods can be added through the congruency rules described on page 93. The signature does not imply a set of predefined methods. For example, the signature of + is (<object>, <object>), but the predefined methods on + only cover subtypes of <number>. Particular behavior of the function is given in its description and in the description of its methods.

A function specified as a "function" cannot portably be extended through the addition of methods. Implementations are free to implement these functions as open generic functions, but programs that take advantage of such liberality will not be portable. The signature of such a function specifies the types of the arguments to which the function may be applicable, but does not necessarily imply that the function is applicable to all instances of the types. The exact behavior of the function is given in its description.

Implementations are allowed to define these generic functions and functions with signatures that are less restrictive than those given below. However, programs that take advantage of this liberality will not be portable.

When a method is specified, it describes the behavior of a generic function when applied to arguments of particular types. It does not imply that this behavior is implemented by a single method. A method described as "sealed" specifies a sealed domain covering the generic function and specializers of the method.

Where a sealed domain is specified, implementations are free to seal the domain or leave the domain unsealed. Portable programs should not rely on the domain being unsealed.