Module Type_equal.Id
Id provides identifiers for types, and the ability to test (via Id.same) at runtime if two identifiers are equal, and if so to get a proof of equality of their types. Unlike values of type Type_equal.t, values of type Id.t do have semantic content and must have a nontrivial runtime representation.
module Uid : sig ... endEvery
Id.tcontains a unique id that is distinct from theUid.tin any otherId.t.
val uid : _ t -> Uid.tval create : name:string -> ('a -> Sexp.t) -> 'a tcreate ~namedefines a new type identity. Two calls tocreatewill result in two distinct identifiers, even for the same arguments with the same type. If the type'adoesn't support sexp conversion, then a good practice is to have the converter be<:sexp_of< _ >>, (orsexp_of_opaque, if not using pa_sexp).
val hash : _ t -> intval name : _ t -> stringval to_sexp : 'a t -> 'a -> Sexp.tval hash_fold_t : Hash.state -> _ t -> Hash.state