aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/util.ml4
-rw-r--r--lib/util.mli1
2 files changed, 5 insertions, 0 deletions
diff --git a/lib/util.ml b/lib/util.ml
index cd32737d2e..0c3c038dd2 100644
--- a/lib/util.ml
+++ b/lib/util.ml
@@ -434,6 +434,10 @@ let iterate f =
let repeat n f x =
for i = 1 to n do f x done
+
+let iterate_for a b f x =
+ let rec iterate i v = if i > b then v else iterate (succ i) (f i v) in
+ iterate a x
(* Misc *)
diff --git a/lib/util.mli b/lib/util.mli
index 5122df3e89..d5976baf1d 100644
--- a/lib/util.mli
+++ b/lib/util.mli
@@ -130,6 +130,7 @@ val matrix_transpose : 'a list list -> 'a list list
val compose : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b
val iterate : ('a -> 'a) -> int -> 'a -> 'a
val repeat : int -> ('a -> unit) -> 'a -> unit
+val iterate_for : int -> int -> (int -> 'a -> 'a) -> 'a -> 'a
(*s Misc. *)