One type, two jobs
The parsed syntax tree and the runtime value are the same enum. No node type sits between source and execution.
pub enum Value {
Nil,
Bool(bool),
Int(i64),
Sym(Rc<str>),
Pair(Rc<Cons>),
Closure(Rc<Closure>),
Builtin(BuiltinFn),
}