definition module infer from Data.Map import :: Map :: Type = VarType String | IntType | BoolType | CharType | Arrow Type Type :: Scheme = Forall [String] Type infer :: Expression -> Infer Type