From 25720e4fb28b7337b4ef54900c02fb95adb69c045e3f71c71a915c41444301a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Linus=20Bj=C3=B6rnstam?= Date: Thu, 22 Oct 2026 07:15:28 +0200 Subject: [PATCH] Traits: write the rules' itemlist with a brace body MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @itemlist[...] gave the items as arguments, which samizdat reads as bjodat, and the comma in the prose stopped it. 🤖 Generated with [ECA](https://eca.dev) Co-Authored-By: eca-agent --- _01.Language-basics.sz | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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}