\end{enumerate}
Perhaps surprisingly, keyword arguments have a relatively small performance
-impact. On the author's aging laptop, a call to a simple function, passing
+impact. On the author's ageing laptop, a call to a simple function, passing
two out of three keyword arguments, takes about 30 cycles longer than calling
a standard function which just takes integer arguments. On the other hand,
quite a lot of code is involved in decoding keyword arguments, so code size
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
Metaobject classes are chosen in a fairly standard way.
\begin{itemize}
\item All metaobject definitions support a symbol-valued property, usually
- named @|@<thing>_class| (e.g., @|slot_class|, @|method_class|), which sets
+ named @|@<thing>{}_class| (e.g., @|slot_class|, @|method_class|), which sets
the metaobject class explicitly. (The class for a class metaobject is
taken from the @|lisp_class| property, because @|class_class| seems less
meaningful.)