Module Incr_map_collate.Fold

type ('k, 'v, 'acc) t = private {
  1. init : 'acc;
  2. add : key:'k -> data:'v -> 'acc -> 'acc;
  3. remove : key:'k -> data:'v -> 'acc -> 'acc;
  4. update : (key:'k -> old_data:'v -> new_data:'v -> 'acc -> 'acc) option;
  5. finalize : ('acc -> 'acc) option;
  6. revert_to_init_when_empty : bool;
}
val create : ?revert_to_init_when_empty:bool -> init:'acc -> add:(key:'k -> data:'v -> 'acc -> 'acc) -> ?update:(key:'k -> old_data:'v -> new_data:'v -> 'acc -> 'acc) -> remove:(key:'k -> data:'v -> 'acc -> 'acc) -> ?finalize:('acc -> 'acc) -> unit -> ('k, 'v, 'acc) t