]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/extlib/hExtlib.ml
new function filter_map_acc
[helm.git] / helm / software / components / extlib / hExtlib.ml
index b2092c5b35be4b91db19529f1449f818f7555868..8451eb6b86c69eb435adf561a7290497cc353ff3 100644 (file)
@@ -217,6 +217,18 @@ let rec filter_map f =
       | None -> filter_map f tl
       | Some v -> v :: filter_map f tl)
 
+let filter_map_acc f acc l =
+  let acc, res = 
+   List.fold_left
+    (fun (acc, res) t ->
+       match f acc t with
+       | None -> acc, res
+       | Some (acc, x) -> acc, x::res)
+    (acc,[]) l
+  in
+   acc, List.rev res
+;;
+
 let list_rev_map_filter f l =
    let rec aux a = function
       | []       -> a