X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/638cd32270bb6aa0596a594f590d2f093be5fd7a..684d95c7eb6ec755d38efacbc377e9e60ba7044e:/doc/concepts.tex diff --git a/doc/concepts.tex b/doc/concepts.tex index cabb1ab..945e6b9 100644 --- a/doc/concepts.tex +++ b/doc/concepts.tex @@ -78,11 +78,11 @@ and a C value being returned to the sender. 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 @@ -169,8 +169,8 @@ in~\cite{barrett-1996:monot-super-linear-dylan}. It works as follows. 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 @@ -1040,7 +1040,7 @@ initialization fragments. There are two kinds of initarg definitions. \emph{User initargs} are defined by an explicit @|initarg| item appearing in a class definition: the item -defines a name, type, and (optionally) a default value for the initarg. +defines a name, a type, and (optionally) a default value for the initarg. \emph{Slot initargs} are defined by attaching an @|initarg| property to a slot or slot initializer item: the property's value determines the initarg's name, while the type is taken from the underlying slot type; slot initargs do