pub fn compile_program( vals: &[Value], ) -> Result<(Rc<Closure>, Vec<Rc<Function>>), SemaError>
Compile a sequence of Value ASTs through the full pipeline and produce the entry closure + function table ready for VM execution.