diff --git a/FIX.org b/FIX.org index b379cb7..9cf7bcc 100644 --- a/FIX.org +++ b/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.