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:
parent
264765a6a5
commit
d7070501e4
13
FIX.org
13
FIX.org
@ -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.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user