Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 26s
eval.sx adds quasiquote / unquote / unquote-splicing as syntactic operators with the canonical R7RS walker: - (quasiquote X) — top-level entry to scm-quasi-walk - (unquote X) — at depth-0, evaluates X in env - (unquote-splicing X) — inside a list, splices X's list value - Reader-macro sugar: `X / ,X / ,@X work via Phase 1 parser Algorithm identical to lib/kernel/runtime.sx's knl-quasi-walk: - Walk template recursively - Non-list: pass through - ($unquote/unquote X) head form: eval X - Inside a list, ($unquote-splicing/unquote-splicing X) head: eval X, splice list into surrounding context - Otherwise: recurse on each element No depth-tracking yet — nested quasiquotes are not properly handled (matches Kernel's deferred state). 10 tests: plain atom/list, unquote substitution, splicing at start/middle/end, nested list with unquote, unquote evaluates expression, error on non-list splice, error on bare unquote. **Second consumer for lib/guest/reflective/quoting.sx unlocked.** Both Kernel and Scheme have structurally identical walkers; the extraction would parameterise just the unquote/splicing keyword names (Kernel uses $unquote / $unquote-splicing; Scheme uses unquote / unquote-splicing — pure cfg, no algorithmic change). 280 total Scheme tests (62+23+49+78+25+20+13+10). Three reflective-kit extractions unlocked in this Scheme port: - env.sx — Phase 2 (consumed directly, third overall consumer) - evaluator.sx — Phase 7 (second consumer via eval/interaction-env) - quoting.sx — Phase 10 (second consumer via scm-quasi-walk) The kit extractions themselves remain follow-on commits when desired. hygiene.sx still awaits a real second consumer (Scheme phase 6c with scope-set algorithm).
4.5 KiB
4.5 KiB