module Key: Type_equal.Idtype 'a t
module Uid:sig..end
Id.t contains a unique id that is distinct from the Uid.t in any other
Id.t.
val uid : 'a t -> Uid.t
val create : name:string -> ('a -> Sexplib.Sexp.t) -> 'a tcreate ~name defines a new type identity. Two calls to create will result in
two distinct identifiers, even for the same arguments with the same type. If the
type 'a doesn't support sexp conversion, then a good practice is to have the
converter be <:sexp_of< _ >>, (or sexp_of_opaque, if not using pa_sexp).val hash : 'a t -> intval name : 'a t -> string
val to_sexp : 'a t -> 'a -> Sexplib.Sexp.t
val same : 'a t -> 'b t -> boolsame_witness t1 t2 and same_witness_exn t1 t2 return a type equality proof iff
the two identifiers are the same (i.e. physically equal, resulting from the same
call to create). This is a useful way to achieve a sort of dynamic typing.
same_witness does not allocate a Some every time it is called.
same t1 t2 = is_some (same_witness t1 t2).
val same_witness : 'a t -> 'b t -> ('a, 'b) Type_equal.equal option
val same_witness_exn : 'a t -> 'b t -> ('a, 'b) Type_equal.equal
val sexp_of_t : ('a -> Sexplib.Sexp.t) -> 'a t -> Sexplib.Sexp.tId.t contains a unique id that is distinct from the Uid.t in any other
Id.t.create ~name defines a new type identity. Two calls to create will result in
two distinct identifiers, even for the same arguments with the same type. If the
type 'a doesn't support sexp conversion, then a good practice is to have the
converter be <:sexp_of< _ >>, (or sexp_of_opaque, if not using pa_sexp).same_witness t1 t2 and same_witness_exn t1 t2 return a type equality proof iff
the two identifiers are the same (i.e. physically equal, resulting from the same
call to create). This is a useful way to achieve a sort of dynamic typing.
same_witness does not allocate a Some every time it is called.
same t1 t2 = is_some (same_witness t1 t2).