functor (X : ORD) ->
sig
type key = X.t
type t
val empty : t
val get : inj:'a injection -> key -> t -> 'a option
val add : inj:'a injection -> key -> 'a -> t -> t
val find : inj:'a injection -> key -> t -> 'a
val cardinal : t -> int
val remove : key -> t -> t
val mem : inj:'a injection -> key -> t -> bool
val iter_keys : f:(key -> unit) -> t -> unit
val fold_keys : f:('a -> key -> 'a) -> x:'a -> t -> 'a
type 'a sequence = ('a -> unit) -> unit
val keys_seq : t -> key sequence
val bindings_of : inj:'a injection -> t -> (key * 'a) sequence
type value = Value : ('a injection -> 'a option) -> value
val bindings : t -> (key * value) sequence
end