The truthiness retry is to reuse the first pass and stay linear
This commit is contained in:
parent
c1dcdeb5af
commit
49a7860cc4
3
TODO.org
3
TODO.org
@ -827,7 +827,8 @@ the losing side meets the strict =bool= boundary and traps —
|
|||||||
=(or false (box "s"))= is the case. Whether a =bool= arm and a =dyn= arm should
|
=(or false (box "s"))= is the case. Whether a =bool= arm and a =dyn= arm should
|
||||||
join as =dyn= is the author's call and is not settled.
|
join as =dyn= is the author's call and is not settled.
|
||||||
|
|
||||||
** TODO A truthiness failure re-runs the whole failing subtree
|
** NEXT A truthiness failure re-runs the whole failing subtree
|
||||||
|
Decided 2026-09-25: fix it without changing any message — the retry reuses what the first pass settled for each subtree (memoised by node), so nested =not= is linear. Test with a deep nest that must fail fast and with the existing message tests unchanged.
|
||||||
The retry exists to keep a refused literal's message unchanged and re-runs the
|
The retry exists to keep a refused literal's message unchanged and re-runs the
|
||||||
subtree rather than the leaf, which is exponential in nested =not= depth on a
|
subtree rather than the leaf, which is exponential in nested =not= depth on a
|
||||||
program that does not type-check. Moot for anything that compiles; only the
|
program that does not type-check. Moot for anything that compiles; only the
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user