From e979b881488827e56841e6eda911acdeb5f3686a Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Tue, 15 Jun 2021 20:54:43 -0400 Subject: [PATCH] add IArray.iteri2 --- src/util/IArray.ml | 6 ++++++ src/util/IArray.mli | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/util/IArray.ml b/src/util/IArray.ml index 8884da4d..16b4d8af 100644 --- a/src/util/IArray.ml +++ b/src/util/IArray.ml @@ -165,6 +165,12 @@ let iter2 f a b = f (unsafe_get a i) (unsafe_get b i) done +let iteri2 f a b = + if length a <> length b then invalid_arg "iteri2"; + for i = 0 to length a-1 do + f i (unsafe_get a i) (unsafe_get b i) + done + let fold2 f acc a b = if length a <> length b then invalid_arg "fold2"; let rec aux acc i = diff --git a/src/util/IArray.mli b/src/util/IArray.mli index 8aff9543..19f103f2 100644 --- a/src/util/IArray.mli +++ b/src/util/IArray.mli @@ -106,5 +106,7 @@ val map2 : ('a -> 'b -> 'c) -> 'a t -> 'b t -> 'c t val fold2 : ('acc -> 'a -> 'b -> 'acc) -> 'acc -> 'a t -> 'b t -> 'acc +val iteri2 : (int -> 'a -> 'b -> unit) -> 'a t -> 'b t -> unit + val iter2 : ('a -> 'b -> unit) -> 'a t -> 'b t -> unit