design: rewrite the step/macro spec against the real grammar #29
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The approved step/macro design spec doesn't hold together; the slice stays on hold until it's revised. Findings from review:
$namehas three incompatible meanings: display label (evaluated immediately, scope discarded), stored macro (deferred), retained namespace (needed by post-hocexport { --pq } $thirds— supported by nothing). As planned, that export either fails "undefined step" or re-runs the body, physically double-folding the paper..a–.dlive in the root scope — the design's own flagship example (@map .p onto --(.a .c)) is undefined under its own rule. Two plan tests contradict each other; ideas.md says "dynamic scoping" — a third story.@axiom3 .e1 .e2(no such verb),moving --e(movingtakes points only),.(.p1 .p2)(wrong sigil), bareexport { --pq }(not in the grammar).stepfuses scoping with diagram grouping;inlinevs export-all differ only in display, proving the axes are independent.Decisions already made for the rewrite:
apply.exportreads from them and never re-runs;applyis the only re-execution form. Qualified access ($b1 = apply …; $b1.tip) falls out and gives FOLD collision-free names._, not-— kebab-case forecloses numeric/arithmetic syntax (repeat n, ratios in ideas.md) and makes whitespace load-bearing next to the--sigil.Every example in the revised spec must be run through the parser before approval.