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