Compiler.Infererval theta0 : Types.tysubstval new_typevar : int -> Types.ty * intval subst_ty : (Types.tyvar * Types.ty) list -> Types.ty -> Types.tyval subst_tyenv :
(Types.tyvar * Types.ty) list ->
('a * Types.ty) list ->
('b * Types.ty) listval compose_subst :
(Types.tyvar * Types.ty) list ->
(Types.tyvar * Types.ty) list ->
(Types.tyvar * Types.ty) listval unify : (Types.ty * Types.ty) list -> (Types.tyvar * Types.ty) listval tinf :
Ast.ast ->
(string * Types.ty) list * Types.ty * Types.tysubst * int * Ast.ast