Expand description
Tree-walking interpreter — Sexp → Value.
Minimal but complete enough to evaluate real Lisp programs that produce
typed Derivation values. Special forms handled inline (to respect
evaluation order / lazy arms); everything else dispatches via apply over
evaluated arguments.
Special forms:
quote— return the literal Sexp as Valueif— short-circuit brancheslet— non-recursive bindingsletrec— recursive bindings via thunkslambda— closure capturedefine— bind in top-level envbegin— sequential evaluationset!— mutate a top-level binding (restricted; see docs)