pub mod util; pub mod display; pub mod check; use crate::sexp::SExp; #[derive(Clone,Debug,PartialEq)] pub enum Type { Integer, Arrow(Box, Box), List(Vec), UndefinedType, // only for errors } #[derive(Debug,PartialEq)] pub enum TypeError { UndefinedVariable(String), InvalidOperator { operator: SExp, expected: Type, found: Type, }, InvalidArgList { arglist: SExp, expected: Type, found: Type, }, OtherError }