list, i.e., $B$ is a more specific superclass of $C$ than $A$ is.
\end{itemize}
The default linearization algorithm used in Sod is the \emph{C3} algorithm,
-which has a number of good properties described in~\cite{Barrett:1996:MSL}.
-It works as follows.
+which has a number of good properties described
+in~\cite{barrett-1996:monot-super-linear-dylan}. It works as follows.
\begin{itemize}
\item A \emph{merge} of some number of input lists is a single list
containing each item that is in any of the input lists exactly once, and no
\end{itemize}
- (This example combines elements from \cite{Barrett:1996:MSL} and
- \cite{Ducournau:1994:PMM}.)
+ (This example combines elements from
+ \cite{barrett-1996:monot-super-linear-dylan} and
+ \cite{ducournau-1994:monot-multip-inher-linear}.)
\end{example}
\subsubsection{Class links and chains}
\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
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.)