Every object is a \emph{direct instance} of exactly one \emph{class}. The
class determines which slots its instances have, which messages its instances
-can be sent, and which methods are invoked when those messages are received.
-The Sod translator's main job is to read class definitions and convert them
-into appropriate C declarations, tables, and functions. An object cannot
-(usually) change its direct class, and the direct class of an object is not
-affected by, for example, the static type of a pointer to it.
+can be sent, and which \emph{methods} are invoked when those messages are
+received. The Sod translator's main job is to read class definitions and
+convert them into appropriate C declarations, tables, and functions. An
+object cannot (usually) change its direct class, and the direct class of an
+object is not affected by, for example, the static type of a pointer to it.
If an object~$x$ is a direct instance of some class~$C$, then we say that $C$
is \emph{the class of}~$x$. Note that the class of an object is a property
have no merge then they are said to be \emph{inconsistent}.
\item The class precedence list of a class $C$ is a merge of the local
precedence list of $C$ together with the class precedence lists of each of
- $C$'s direct superclasses.
-\item If there are no such merges, then the definition of $C$ is invalid.
+ $C$'s direct superclasses. If these lists are inconsistent, then the
+ definition of $C$ is invalid.
\item Suppose that there are multiple candidate merges. Consider the
earliest position in these candidate merges at which they disagree. The
\emph{candidate classes} at this position are the classes appearing at this
initializers, \emph{and} the sender supplied a value for one or more of the
corresponding effective initargs, then the value of the most specific such
initarg is stored in the slot. (For this purpose, initargs defined earlier
- in a class definition are more specific than initargs defined later.)
+ in a class definition are more specific than initargs defined
+ later.)\footnote{%
+ This is very different from the CLOS behaviour, in which a slot is
+ initialized from the first applicable initarg in the argument list.}
\item Otherwise, if there are any slot initializers defined which include an
initializer expression, then the initializer expression from the most