Base.Indexed_containerSourceProvides generic signatures for containers that support indexed iteration (iteri, foldi, ...). In principle, any container that has iter can also implement iteri, but the idea is that Indexed_container_intf should be included only for containers that have a meaningful underlying ordering.
Generic definitions of foldi and iteri in terms of fold.
E.g., iteri ~fold t ~f = ignore (fold t ~init:0 ~f:(fun i x -> f i x; i + 1)).
val foldi :
fold:('t -> init:'accum -> f:('accum -> 'a -> 'accum) -> 'accum) ->
't ->
init:'accum ->
f:(int -> 'accum -> 'a -> 'accum) ->
'accumval iteri :
fold:('t -> init:int -> f:(int -> 'a -> int) -> int) ->
't ->
f:(int -> 'a -> unit) ->
unitGeneric definitions of indexed container operations in terms of foldi.
val counti :
foldi:('t -> init:int -> f:(int -> int -> 'a -> int) -> int) ->
't ->
f:(int -> 'a -> bool) ->
intGeneric definitions of indexed container operations in terms of iteri.
val existsi :
iteri:('t -> f:(int -> 'a -> unit) -> unit) ->
't ->
f:(int -> 'a -> bool) ->
boolval for_alli :
iteri:('t -> f:(int -> 'a -> unit) -> unit) ->
't ->
f:(int -> 'a -> bool) ->
boolval findi :
iteri:('t -> f:(int -> 'a -> unit) -> unit) ->
't ->
f:(int -> 'a -> bool) ->
(int * 'a) optionval find_mapi :
iteri:('t -> f:(int -> 'a -> unit) -> unit) ->
't ->
f:(int -> 'a -> 'b option) ->
'b option