The queue marks item 7 landed, and names the or asymmetry it turned up

dyn if's truthiness rule reached when, cond, and, or, not and while
through one checker funnel, and turned up something nobody had decided:
and's short-circuit answer already carries a non-bool dyn value through,
Clojure-style, but or's does not, because its sentinel occupies the arm
check_if types first. Written down here rather than fixed, since the
queue's items get decided one at a time and this one is not yet.
This commit is contained in:
Joseph Ferano 2026-09-20 07:20:53 +07:00
parent 264765a6a5
commit d7070501e4

13
FIX.org
View File

@ -436,7 +436,18 @@ rename. typed-flan branch freezes the static language pre-dyn.
6. defclass = named dyn map + shape tag; CLOS class dispatch AND
Clojure-style arbitrary dispatch functions. After 1.
7. dyn if: truthiness (nil/false are false, all else true). Typed stays
strict bool.
strict bool. — LANDED, a94efcc
Reaches when, cond, if's own condition, and's condition, or's
condition, not and while for free or by hand, all through one funnel
in check.ml (check_truthy). One thing fell out of it that nobody had
decided: and's answer position already carries a non-bool dyn value
through, Clojure-style, because its short-circuit sentinel is the else
arm and the real value's type wins; or's sentinel is the then arm
instead, so it is what decides the whole expression's type, and or's
answer stays a strict bool. Reordering or to match and is a real fix
and nobody's called it yet — left alone, noted in parse.ml at
shortcircuit.
8. Return slot stays mandatory (dyn or ()) — the parse ambiguity it closes
is real; revisit only if it grates. SETTLED 2026-09-19, reconfirmed with
the author: both spellings stay legal, () is not collapsing into dyn.