aboutsummaryrefslogtreecommitdiff
path: root/lib/util.ml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/util.ml')
-rw-r--r--lib/util.ml18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/util.ml b/lib/util.ml
index e17e586c20..c733ed3335 100644
--- a/lib/util.ml
+++ b/lib/util.ml
@@ -141,6 +141,24 @@ let list_fold_left_i f =
in
it_list_f
+(* [list_fold_right_and_left f [a1;...;an] hd =
+ f (f (... (f (f hd
+ an
+ [an-1;...;a1])
+ an-1
+ [an-2;...;a1])
+ ...)
+ a2
+ [a1])
+ a1
+ []] *)
+
+let rec list_fold_right_and_left f l hd =
+ let rec aux tl = function
+ | [] -> hd
+ | a::l -> let hd = aux (a::tl) l in f hd a tl
+ in aux [] l
+
let list_iter_i f l = list_fold_left_i (fun i _ x -> f i x) 0 () l
let list_for_all_i p =