Module Core_kernel.Univ_map

module Type_id_key : Key with type 'a t = 'a Type_equal.Id.t
include S with type 'a S.data = 'a and module S.Key := Type_id_key
type t
val sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.t
type 'a data = 'a
val invariant : t Base__.Invariant_intf.inv
val empty : t
val is_empty : t -> Core_kernel__.Import.bool
val set : t -> 'a Type_id_key.t -> 'a data -> t
val mem : t -> 'a Type_id_key.t -> Core_kernel__.Import.bool
val mem_by_id : t -> Type_equal.Id.Uid.t -> Core_kernel__.Import.bool
val find : t -> 'a Type_id_key.t -> 'a data Core_kernel__.Import.option
val find_exn : t -> 'a Type_id_key.t -> 'a data
val add : t -> 'a Type_id_key.t -> 'a data -> [ `Duplicate | `Ok of t ]
val add_exn : t -> 'a Type_id_key.t -> 'a data -> t
val change : t -> 'a Type_id_key.t -> f:('a data Core_kernel__.Import.option -> 'a data Core_kernel__.Import.option) -> t
val change_exn : t -> 'a Type_id_key.t -> f:('a data -> 'a data) -> t
val update : t -> 'a Type_id_key.t -> f:('a data Core_kernel__.Import.option -> 'a data) -> t
val remove : t -> 'a Type_id_key.t -> t
val remove_by_id : t -> Type_equal.Id.Uid.t -> t
module Packed : sig ... end
val to_alist : t -> Packed.t Core_kernel__.Import.list
val of_alist_exn : Packed.t Core_kernel__.Import.list -> t
module Key = Type_equal.Id

This binding is convenient because existing call sites often refer to Univ_map.Key.create.

module Make : functor (Key : Key) -> functor (Data : Data) -> S with type 'a data = 'a Data.t and module Key = Key
module Make1 : functor (Key : Key) -> functor (Data : Core_kernel__.Univ_map_intf.Data1) -> S1 with type ('s, 'a) data = ('s'a) Data.t and module Key = Key
module With_default : sig ... end

keys with associated default values, so that find is no longer partial

module With_fold : sig ... end

keys that map to an accumulator value with an associated fold operation

module Multi : sig ... end

list-accumulating keys with a default value of the empty list