Univ_map.With_fold
keys that map to an accumulator value with an associated fold operation
module Key : sig ... end
val set : t -> key:('a, 'b) Key.t -> data:'b -> t
reset the accumulator
val find : t -> ('a, 'b) Key.t -> 'b
the current accumulator
val add : t -> key:('a, 'b) Key.t -> data:'a -> t
fold value into accumulator
val change : t -> ('a, 'b) Key.t -> f:('b -> 'b) -> t
accumulator update