Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 27s
Adds the rest of the standard syntactic operators, all built on the existing eval/closure infrastructure from Phase 3: - let — parallel bindings in fresh child env; values evaluated in outer env (RHS sees pre-let bindings only). Multi-body via scheme-eval-body. - let* — sequential bindings, each in a nested child env; later bindings see earlier ones. - cond — clauses walked in order; first truthy test wins. `else` symbol is the catch-all. Test-only clauses (no body) return the test value. Scheme truthiness: only #f is false. - when / unless — single-test conditional execution, multi-body body via scheme-eval-body. - and / or — short-circuit boolean. Empty `(and)` = true, `(or)` = false. Both return the actual value at the point of short-circuit (not coerced to bool), matching R7RS. 130 total Scheme tests (62 parse + 23 eval + 45 syntax). The Scheme port is now self-hosting enough to write any non-stdlib program — factorial, list operations via primitives, closures with mutable state, all working. Next phase: standard env (runtime.sx) with variadic +/-, list ops as Scheme-visible applicatives.
9.3 KiB
9.3 KiB