Any expression is to take its type from (the T expr)

This commit is contained in:
Joseph Ferano 2026-09-25 09:52:29 +07:00
parent 1cec47b5d4
commit 51ce9a2ba6

View File

@ -892,7 +892,8 @@ Not the same fix: a bracket literal has no argument to put a type in. Decision:
how a literal names its element type — a spelling of its own, or a =let= how a literal names its element type — a spelling of its own, or a =let=
annotation. annotation.
** TODO A let binding takes no type annotation ** NEXT A let binding takes no type annotation
Decided 2026-09-25: =(the T expr)=, Common Lisp's special operator, gives any expression its want; checked at compile time like any other want, and it compiles to nothing. =let= is unchanged. On a =dyn= operand it is refused, naming the cast. The refusals that say "annotate the binding" — =None=, an empty =[]=, and =(zeroed)=/=(filled)=/=(dead-beef)= with no want — suggest it instead, because today their suggestion cannot compile.
Everything under the surface is there — the binding carries a type slot and the Everything under the surface is there — the binding carries a type slot and the
checker consumes it as the want — and only the way it is written is open, because checker consumes it as the want — and only the way it is written is open, because
=let= is a flat list of pairs and cannot disambiguate by count. No longer the =let= is a flat list of pairs and cannot disambiguate by count. No longer the