Module Type
: (moduleStdlib__Type)Typeequalitywitnesstype(_,_)eq =
| Equal :('a,'a)eq
The purpose of eq is to represent type equalities that may not otherwise be known by the type checker
(e.g. because they may depend on dynamic data).
A value of type (a,b)eq represents the fact that types a and b are equal.
If one has a value eq:(a,b)eq that proves types a and b are equal, one can use it to convert a value
of type a to a value of type b by pattern matching on Equal :
letcast(typea)(typeb)(Equal:(a,b)Type.eq)(a:a):b=a
At runtime, this function simply returns its second argument unchanged.
TypeidentifiersmoduleId:sigend
Type identifiers.
A type identifier is a value that denotes a type. Given two type identifiers, they can be tested for
Type.Id.provably_equal to prove they denote the same type. Note that:
-Unequal identifiers do not imply unequal types: a given type can be denoted by more than one identifier.
-Type identifiers can be marshalled, but they get a new, distinct, identity on unmarshalling, so the
equalities are lost.
See an Type.Id.example of use.
OCamldoc 2025-06-12 Stdlib.Type(3o)