The evaluator core consists of quotation, variable reference, if, sequencing, lambda, application, assignment, definition, lexical binding, and fixed control nodes.
At a glance
LISPEX
((lambda (x) (if #t x 0)) 42)Result
OUTPUT
42Current guarantees
ifhas a mandatory else arm;beginand procedure bodies preserve left-to-right order.lambdasupports fixed and dotted formals;set!mutates an existing cell;defineupdates or creates a top-level cell.quotereturns immutable literal data; runtime does not evaluate quoted elements.
Form contracts
| Form | Arity / evaluation | Result or fault |
|---|---|---|
| quote | 1 datum; no element evaluation | immutable datum |
| if | test, consequent, alternate; test first | selected branch packet; E320 if test is not one value |
| lambda | formals plus 1..N body forms | closure; E302 when applied with wrong arity |
| set! | name and single-value RHS | zero values; E303 if unbound |
| let / letrec | binding list plus 1..N body forms | last body packet; E321 on uninitialized letrec read |
Boundaries
- Surface convenience forms belong to the derived-form reference.