type 'a type_carrier =
| T
Helper type
type 'a witness
Unique type identifier with equality
type key
key type
val id : 'a witness -> key
Compute the value-level identifier associated to a type-level identifier
type binding =
| B : 'a witness * 'a -> binding
Bind together an 'a type-identifier with an 'a value
val extract : 'a witness -> binding -> 'a option
Try to extract an 'a value from a binding using the given type identifier
val extract_exn : 'a witness -> binding -> 'a
val create : unit -> 'a witness
Create a new type identifier