Balanced_reducerA Balanced_reducer.t stores a mutable fixed-length sequence of optional values, and incrementally maintains the result of folding an associative operation (reduce) over the sequence as its elements change.
val sexp_of_t : ('a -> Sexplib0.Sexp.t) -> 'a t -> Sexplib0.Sexp.tinclude Base.Invariant.S1 with type 'a t := 'a tval invariant : ('a -> unit) -> 'a t -> unitval create_exn :
?sexp_of_a:('a -> Base.Sexp.t) ->
Base.unit ->
len:Base.int ->
reduce:('a -> 'a -> 'a) ->
'a t @@ portablecreate_exn ~len ~reduce creates a balanced reducer of length len, all of whose elements are None. It raises if len < 1.
set_exn t i a updates the value at index i to Some a. It raises if i is out of bounds.
get_exn t i gets the value at index i. It raises if i is out of bounds, or set_exn t i has never been called.
val compute_exn : 'a t -> 'a @@ portablecompute_exn t computes the value of the fold. It raises if any values of the array are None.