definition module type from Data.Either import :: Either from AST import :: AST typecheck :: AST -> Either String AST