`functor
(Data : sig
type ('s, 'a) t
val sexp_of_t :
('s -> Sexplib.Sexp.t) ->
('a -> Sexplib.Sexp.t) ->
('s, 'a) Univ_map.Make1.t -> Sexplib.Sexp.t
end) ->
sig
type 's t
type ('s, 'a) data = ('s, 'a) Data.t
val invariant : 'a t -> unit
val empty : 'a t
val is_empty : 'a t -> bool
val set : 's t -> 'a Key.t -> ('s, 'a) data -> 's t
val mem : 'a t -> 'b Key.t -> bool
val find : 's t -> 'a Key.t -> ('s, 'a) data option
val find_exn : 's t -> 'a Key.t -> ('s, 'a) data
val add :
's t -> 'a Key.t -> ('s, 'a) data -> [ `Duplicate | `Ok of 's t ]
val add_exn : 's t -> 'a Key.t -> ('s, 'a) data -> 's t
val change :
's t ->
'a Key.t -> (('s, 'a) data option -> ('s, 'a) data option) -> 's t
val change_exn :
's t -> 'a Key.t -> (('s, 'a) data -> ('s, 'a) data) -> 's t
module Packed : sig type 's t = T : 'a Key.t * ('s, 'a) data -> 's t end
val to_alist : 's t -> 's Packed.t list
val sexp_of_t : ('s -> Sexplib.Sexp.t) -> 's t -> Sexplib.Sexp.t
end`