definition module check from StdOverloaded import class toString from Data.Either import :: Either from ast import :: Function, :: Expression :: Scheme = Forall [[Char]] Type :: Type = TVar [Char] | TInt | TBool | (-->) infixr 9 Type Type instance toString Scheme, Type check :: [Function] -> Either [String] (Expression, [([Char], Scheme)])