diff --git a/_01.Language-basics.sz b/_01.Language-basics.sz index c7df994..f021c08 100644 --- a/_01.Language-basics.sz +++ b/_01.Language-basics.sz @@ -2169,10 +2169,10 @@ An implementation may be written for a generic type at particular type arguments The compiler picks the one whose arguments match. Two rules keep that choice unambiguous: -@itemlist[ +@itemlist{ @item{Two implementations may not overlap. With @code{(List int)} already there, @code{(impl (Describe (List %a)) ...)} is refused, since a @code{(List int)} would then have two.} @item{The type has to be known where the call is. @code{(describe (list))} is an error, because an empty list could be either, and so is a call at @code{(List %a)} in a generic function: neither implementation is written for every element type. Give such a value an annotation, or write one implementation for @code{(List %a)} with a @code{where}, as in the next section.} -] +} @subsubsection{Conditional and blanket implementations}