module type S = sig ... endmodule type S1 = sig ... endmodule type Key = sig ... endmodule type Data = sig ... endmodule Type_id_key : Key with type 'a t = 'a Type_equal.Id.tinclude S with type 'a data = 'a and module Key := Type_id_key
val sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.t
include Base.Invariant.S with type t := t
val invariant : t -> unit
val empty : tval is_empty : t -> Base.Bool.tval set : t -> 'a Type_id_key.t -> 'a data -> tval mem : t -> 'a Type_id_key.t -> Base.Bool.tval mem_by_id : t -> Type_equal.Id.Uid.t -> Base.Bool.tval find : t -> 'a Type_id_key.t -> 'a data Base.Option.tval find_exn : t -> 'a Type_id_key.t -> 'a dataval add : t -> 'a Type_id_key.t -> 'a data -> [ `Ok of t | `Duplicate ]val add_exn : t -> 'a Type_id_key.t -> 'a data -> tval change : t -> 'a Type_id_key.t -> f:('a data Base.Option.t -> 'a data Base.Option.t) -> tval change_exn : t -> 'a Type_id_key.t -> f:('a data -> 'a data) -> tval update : t -> 'a Type_id_key.t -> f:('a data Base.Option.t -> 'a data) -> tval remove : t -> 'a Type_id_key.t -> tval remove_by_id : t -> Type_equal.Id.Uid.t -> t
module Packed : sig ... endval to_alist : t -> Packed.t Base.List.tval of_alist_exn : Packed.t Base.List.t -> t
module Key = Type_equal.IdThis 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 = Keymodule Make1 : functor (Key : Key) -> functor (Data : sig ... end) -> S1 with type ('s, 'a) data = ('s, 'a) Data.t and module Key = Keymodule Merge : functor (Key : Key) -> functor (Input1_data : sig ... end) -> functor (Input2_data : sig ... end) -> functor (Output_data : sig ... end) -> sig ... endmodule With_default : sig ... endkeys with associated default values, so that
findis no longer partial
module With_fold : sig ... endkeys that map to an accumulator value with an associated fold operation
module Multi : sig ... endlist-accumulating keys with a default value of the empty list