Module Base__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.
val sexp_of_t : ('a -> Base.Sexp.t) -> 'a t -> Base.Sexp.t
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 -> Base.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 -> Base.Sexp.tval hash_fold_t : Base.Hash.state -> _ t -> Base.Hash.state