aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/util.ml5
-rw-r--r--lib/util.mli1
2 files changed, 6 insertions, 0 deletions
diff --git a/lib/util.ml b/lib/util.ml
index 5e10091e3f..44b5ef08fa 100644
--- a/lib/util.ml
+++ b/lib/util.ml
@@ -322,6 +322,11 @@ let array_last v =
let array_cons e v = Array.append [|e|] v
+let array_fold_left_i f v a =
+ let n = Array.length a in
+ let rec fold i v = if i = n then v else fold (succ i) (f i v a.(i)) in
+ fold 0 v
+
let array_fold_left2 f a v1 v2 =
let lv1 = Array.length v1 in
let rec fold a n =
diff --git a/lib/util.mli b/lib/util.mli
index d46672a603..8938257898 100644
--- a/lib/util.mli
+++ b/lib/util.mli
@@ -103,6 +103,7 @@ val array_hd : 'a array -> 'a
val array_tl : 'a array -> 'a array
val array_last : 'a array -> 'a
val array_cons : 'a -> 'a array -> 'a array
+val array_fold_left_i : (int -> 'a -> 'b -> 'a) -> 'a -> 'b array -> 'a
val array_fold_left2 :
('a -> 'b -> 'c -> 'a) -> 'a -> 'b array -> 'c array -> 'a
val array_fold_left2_i :