pub type TypedProgram = Program<TypedAST>;
pub struct TypedProgram { pub defs: Vec<Def<TypedAST>>, pub main_def: usize, }
defs: Vec<Def<TypedAST>>
main_def: usize