]> matita.cs.unibo.it Git - helm.git/commitdiff
new function filter_map_acc
authorEnrico Tassi <enrico.tassi@inria.fr>
Wed, 10 Jun 2009 11:39:26 +0000 (11:39 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Wed, 10 Jun 2009 11:39:26 +0000 (11:39 +0000)
helm/software/components/extlib/.depend.opt
helm/software/components/extlib/hExtlib.ml
helm/software/components/extlib/hExtlib.mli

index 6d96e61e208bef26caadc6f9c5f7c049cf588648..3f72e1d248c45af35b871360f1b6e5e47d6363b7 100644 (file)
@@ -1,3 +1,12 @@
+componentsConf.cmi: 
+hExtlib.cmi: 
+hMarshal.cmi: 
+patternMatcher.cmi: 
+hLog.cmi: 
+trie.cmi: 
+hTopoSort.cmi: 
+refCounter.cmi: 
+graphvizPp.cmi: 
 componentsConf.cmo: componentsConf.cmi 
 componentsConf.cmx: componentsConf.cmi 
 hExtlib.cmo: hExtlib.cmi 
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
index 20e6c0192dcac84defb6613cb87ae31aca216c58..a0b85ca4f9b1e27ece951ec169a86ef0ca6f32e8 100644 (file)
@@ -84,6 +84,9 @@ val trim_blanks: string -> string (** strip heading and trailing blanks *)
 val list_uniq: 
   ?eq:('a->'a->bool) -> 'a list -> 'a list (** uniq unix filter on lists *)
 val filter_map: ('a -> 'b option) -> 'a list -> 'b list (** filter + map *)
+val filter_map_acc: ('acc -> 'a -> ('acc * 'b) option) -> 'acc -> 'a list ->
+        'acc * 'b list (** fold/filter + map *)
+
 val list_rev_map_filter: ('a -> 'b option) -> 'a list -> 'b list
 val list_rev_map_filter_fold: ('c -> 'a -> 'c * 'b option) -> 'c -> 'a list -> 'c * 'b list
 val list_concat: ?sep:'a list -> 'a list list -> 'a list (**String.concat-like*)