Module type Type.Polymorphic

module type Polymorphic = sig .. end
For a polymorphic type value with one type variable, you must use an implementation of this signature.

type 'a poly 
Type of the polymorphic type (for instance 'a list). It must be instantiated before used. See function instantiate below.
val instantiate : 'a Type.t -> 'a poly Type.t * bool
Returns the monomorphic instantiation of the polymorph type with the given type value. For instance, if 'a poly = 'a list, then instantiate int returns the type value int list.
val is_instance_of : 'a Type.t -> bool
Returns true iff the given type value has been created from function instantiate above. For instance, is_instance_of (instantiate int) always returns true but is_instance_of int always returns false.
val get_instance : 'a poly Type.t -> 'a Type.t
get_instance ty returns the type value used to create the given monomorphic instantiation.