val empty : 'a tval is_empty : _ t ‑> boolupdate k ~f m calls f (Some v) if get k m = Some v, f None
otherwise. Then, if f returns Some v' it binds k to v',
if f returns None it removes k.
val add_mut : id:Transient.t ‑> key ‑> 'a ‑> 'a t ‑> 'a tadd_mut ~id k v m behaves like add k v m, except it will mutate
in place whenever possible. Changes done with an id might affect all
versions of the structure obtained with the same id (but not
other versions).
id is frozen.val remove_mut : id:Transient.t ‑> key ‑> 'a t ‑> 'a tSame as remove, but modifies in place whenever possible.
id is frozen.val update_mut : id:Transient.t ‑> key ‑> f:('a option ‑> 'a option) ‑> 'a t ‑> 'a tSame as update but with mutability.
id is frozen.val cardinal : _ t ‑> intval add_list_mut : id:Transient.t ‑> 'a t ‑> (key * 'a) list ‑> 'a tval add_seq_mut : id:Transient.t ‑> 'a t ‑> (key * 'a) sequence ‑> 'a tval add_gen_mut : id:Transient.t ‑> 'a t ‑> (key * 'a) gen ‑> 'a t