Module Incremental__.Unordered_array_fold
include module type of sig ... end
type ('a, 'acc) t
= ('a, 'acc) Incremental__Types.Unordered_array_fold.t
=
{
main : 'acc Incremental__Types.Node.t;
init : 'acc;
f : 'acc -> 'a -> 'acc;
f_inverse : 'acc -> 'a -> 'acc;
full_compute_every_n_changes : int;
children : 'a Incremental__Types.Node.t array;
mutable fold_value : 'acc Incremental__.Import.Uopt.t;
mutable num_changes_since_last_full_compute : int;
}
include Core_kernel.Invariant.S2 with type ('a, 'acc) t := ('a, 'acc) t
val invariant : 'a Base__.Invariant_intf.inv -> 'b Base__.Invariant_intf.inv -> ('a, 'b) t Base__.Invariant_intf.inv
include Incremental__.Sexp_of.S2 with type ('a, 'acc) t := ('a, 'acc) t
val sexp_of_t : ('a -> Ppx_sexp_conv_lib.Sexp.t) -> ('b -> Ppx_sexp_conv_lib.Sexp.t) -> ('a, 'b) t -> Ppx_sexp_conv_lib.Sexp.t
val create : init:'acc -> f:('acc -> 'a -> 'acc) -> f_inverse:('acc -> 'a -> 'acc) -> full_compute_every_n_changes:int -> children:'a Incremental__.Types.Node.t array -> main:'acc Incremental__.Types.Node.t -> ('a, 'acc) t
val compute : (_, 'acc) t -> 'acc
val child_changed : ('a, _) t -> child:'b Incremental__.Types.Node.t -> child_index:int -> old_value_opt:'b Incremental__.Import.Uopt.t -> new_value:'b -> unit
val force_full_compute : (_, _) t -> unit