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 | TFun Type Type instance toString Scheme, Type check :: [Function] -> Either [String] (Expression, Scheme)