Index: doc/generic_types/generic_types.tex
===================================================================
--- doc/generic_types/generic_types.tex	(revision 3720bf8f6d2a6476ac53eb685fd60fbb8337906f)
+++ doc/generic_types/generic_types.tex	(revision f3be34244c109eb245f654bf5077bbafc2fcb0ac)
@@ -327,8 +327,8 @@
 % \end{lstlisting}
 
-In summation, the \CFA type-system uses \emph{nominal typing} for concrete types, matching with the C type-system and \emph{structural typing} for polymorphic types.
+In summation, the \CFA type-system uses \emph{nominal typing} for concrete types, matching with the C type-system, and \emph{structural typing} for polymorphic types.
 Hence, trait names play no part in type equivalence;
 the names are simply macros for a list of polymorphic assertions, which are expanded at usage sites.
-Nevertheless, trait names form a logical subtype-hierarchy with @dtype@ at the top, where traits often contain overlapping assertions.
+Nevertheless, trait names form a logical subtype-hierarchy with @dtype@ at the top, where traits often contain overlapping assertions, \eg operator @+@.
 Traits are used like interfaces in Java or abstract base-classes in \CC, but without the nominal inheritance-relationships.
 Instead, each polymorphic function (or generic type) defines the structural type needed for its execution (polymorphic type-key), and this key is fulfilled at each call site from the lexical environment, which is similar to Go~\citep{Go} interfaces.
@@ -471,9 +471,10 @@
 \begin{lstlisting}
 forall(dtype T) int lexcmp( pair( T *, T * ) * a, pair( T *, T * ) * b, int (* cmp)( T *, T * ) ) {
-	int c = cmp( a->first, b->first );
-	if ( c == 0 ) c = cmp( a->second, b->second );
-	return c;
-}
-\end{lstlisting}
+	return cmp( a->first, b->first ) ? : cmp( a->second, b->second );
+}
+\end{lstlisting}
+%	int c = cmp( a->first, b->first );
+%	if ( c == 0 ) c = cmp( a->second, b->second );
+%	return c;
 Since @pair(T *, T * )@ is a concrete type, there are no implicit parameters passed to @lexcmp@, so the generated code is identical to a function written in standard C using @void *@, yet the \CFA version is type-checked to ensure the fields of both pairs and the arguments to the comparison function match in type.
 
