A literal's reading is fixed where it is bound, and a dyn past the second operand of + is recorded as converted wrongly.

This commit is contained in:
Joseph Ferano 2026-09-26 15:31:58 +07:00
parent 85482956ea
commit e3f431ea79

View File

@ -10,6 +10,12 @@ pointing at it. A CANCELLED entry carries the one-line reason, because an idea
rejected without a record is an idea that gets re-proposed. rejected without a record is an idea that gets re-proposed.
* Language surface * Language surface
** DONE A literal's reading is fixed where it is bound
CLOSED: [2026-09-26]
Decision 132, clarifying 117: a vector, map or text literal is typed only when its own
binding is annotated or it is passed straight to a typed parameter; a later typed use
converts the dyn value at that site. Rules out a later line changing what an earlier
line prints.
** NEXT .fln is the only source language ** NEXT .fln is the only source language
Decided 2026-09-26 (130): the .flan syntax is retired. .fln names carry no =?= or =!=; Decided 2026-09-26 (130): the .flan syntax is retired. .fln names carry no =?= or =!=;
predicates are =is-=/=has-=, and the raylib generator emits =is-key-pressed=. Swift predicates are =is-=/=has-=, and the raylib generator emits =is-key-pressed=. Swift
@ -781,6 +787,9 @@ One spelling for one operation; != stays, and not= is refused with a suggestion
of !=. of !=.
* Checker * Checker
** TODO A dyn operand past the second in a + fold is converted to the running type
=(+ 1 2 d)= with d a dyn char prints 100: the dyn is unboxed to i32 before adding, where
rule 117 says typed beside dyn gives dyn (=(+ 3 d)= gives =\d=). Predates the char lane.
** WAIT Checking a wide fold of let operands is slow ** WAIT Checking a wide fold of let operands is slow
Parked 2026-09-26: design first; remeasure on a quiet machine, it was timed under load 20. Parked 2026-09-26: design first; remeasure on a quiet machine, it was timed under load 20.
A 2000-operand (bit-and (let …) …) takes 32 s to check (37 s before the bit operators); A 2000-operand (bit-and (let …) …) takes 32 s to check (37 s before the bit operators);