lower

Function lower 

Source
pub fn lower(sexp: &Sexp, names: &mut Vec<SmolStr>) -> Result<Exp, String>
Expand description

Lower a read s-expression to an Exp, resolving names against names — the compile-time stack of binders in scope, which mirrors the runtime environment slot-for-slot. Innermost binding wins (rposition), so shadowing works; an unresolved name is an error at lowering time, not runtime.

names is borrowed mutably because binders push onto it during their body’s lowering; it is restored before returning. Callers evaluating closed top-level forms pass a fresh Vec.