diff options
| author | herbelin | 2012-03-20 08:02:11 +0000 |
|---|---|---|
| committer | herbelin | 2012-03-20 08:02:11 +0000 |
| commit | 541ff113562c62381100caea84bf58ce5b2cd3ce (patch) | |
| tree | 5e194ce12f2a98843bb0a39818715838e1905bd7 /lib | |
| parent | 0a59c2e537040d3e74fd65cd738fa617cbd4f1e2 (diff) | |
Reorganizing the structure of evarutil.ml (only restructuration, no
change of semantics).
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@15060 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/util.ml | 12 | ||||
| -rw-r--r-- | lib/util.mli | 4 |
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/util.ml b/lib/util.ml index e6c76f7f3d..2bbdc76cf9 100644 --- a/lib/util.ml +++ b/lib/util.ml @@ -666,6 +666,12 @@ let list_map_filter_i f = match f i x with None -> l' | Some y -> y::l' in aux 0 +let list_filter_along f filter l = + snd (list_filter2 (fun b c -> f b) (filter,l)) + +let list_filter_with filter l = + list_filter_along (fun x -> x) filter l + let list_subset l1 l2 = let t2 = Hashtbl.create 151 in List.iter (fun x -> Hashtbl.add t2 x ()) l2; @@ -1183,6 +1189,12 @@ let array_rev_to_list a = if i >= Array.length a then res else tolist (i+1) (a.(i) :: res) in tolist 0 [] +let array_filter_along f filter v = + Array.of_list (list_filter_along f filter (Array.to_list v)) + +let array_filter_with filter v = + Array.of_list (list_filter_with filter (Array.to_list v)) + (* Stream *) let stream_nth n st = diff --git a/lib/util.mli b/lib/util.mli index 37d15792f2..8f8475afd7 100644 --- a/lib/util.mli +++ b/lib/util.mli @@ -87,6 +87,8 @@ val list_duplicates : 'a list -> 'a list val list_filter2 : ('a -> 'b -> bool) -> 'a list * 'b list -> 'a list * 'b list val list_map_filter : ('a -> 'b option) -> 'a list -> 'b list val list_map_filter_i : (int -> 'a -> 'b option) -> 'a list -> 'b list +val list_filter_with : bool list -> 'a list -> 'a list +val list_filter_along : ('a -> bool) -> 'a list -> 'b list -> 'b list (** [list_smartmap f [a1...an] = List.map f [a1...an]] but if for all i [ f ai == ai], then [list_smartmap f l==l] *) @@ -244,6 +246,8 @@ val array_fold_map2' : val array_distinct : 'a array -> bool val array_union_map : ('a -> 'b -> 'b) -> 'a array -> 'b -> 'b val array_rev_to_list : 'a array -> 'a list +val array_filter_along : ('a -> bool) -> 'a list -> 'b array -> 'b array +val array_filter_with : bool list -> 'a array -> 'a array (** {6 Streams. } *) |
