module Type:sig
..end
Type introspection.
type (_, _)
eq =
| |
Equal : |
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
:
let cast (type a) (type b) (Equal : (a, b) Type.eq) (a : a) : b = a
At runtime, this function simply returns its second argument unchanged.
module Id:sig
..end
Type identifiers.