Module Incremental__Unordered_array_fold
A module internal to Incremental. Users should see Incremental_intf
.
An ('a, 'acc) Unordered_array_fold.t
is a kind of DAG node, where 'a
is the type of value being folded and 'acc
is the type of the accumulator.
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;
update : 'acc -> old_value:'a -> new_value:'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
module Update : sig ... end
val create : init:'acc -> f:('acc -> 'a -> 'acc) -> update:('a, 'acc) Update.t -> 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