An extensible "universal" variant type.

Every type id (Type_equal.Id.t) corresponds to one branch of the variant type.

type t
val type_id_name : t -> string
val type_id_uid : t -> Type_equal.Id.Uid.t
val create : 'a Type_equal.Id.t -> 'a -> t
val does_match : t -> 'a Type_equal.Id.t -> bool
does_match t id returns true iff t was created by create id v.
val match_ : t -> 'a Type_equal.Id.t -> 'a option
match_ t id returns Some v if t was created by create id v, and returns None otherwise.

match_exn t id returns v if t was created by create id v, and raises otherwise.

val match_exn : t -> 'a Type_equal.Id.t -> 'a
module View : sig .. end
type t = 
|T of 'a Type_equal.Id.t * 'a
val view : t -> View.t
view t provides access to the GADT representation of t. This is currently the same as the underlying representation, but is put in the View module to make later changes to the underlying representation easier.
val sexp_of_t : t -> Sexplib.Sexp.t