Add filter_map utility.
authorRichard W.M. Jones <rjones@redhat.com>
Mon, 20 Feb 2012 15:45:34 +0000 (15:45 +0000)
committerRichard W.M. Jones <rjones@redhat.com>
Mon, 20 Feb 2012 15:45:34 +0000 (15:45 +0000)
lib/whenutils.ml
lib/whenutils.mli

index 1fbb1c6..8cab30e 100644 (file)
@@ -30,6 +30,13 @@ end
 
 module StringSet = Set.Make (String)
 
+let rec filter_map f = function
+  | [] -> []
+  | x :: xs ->
+    match f x with
+    | Some y -> y :: filter_map f xs
+    | None -> filter_map f xs
+
 type whenexpr =
   | Expr_bool of bool
   | Expr_str of string
index b2a8878..c935906 100644 (file)
@@ -81,6 +81,9 @@ module StringSet : sig
 end
 (** A set of strings. *)
 
+val filter_map : ('a -> 'b option) -> 'a list -> 'b list
+(** Filter + map. *)
+
 type whenexpr =
   | Expr_bool of bool                   (** A boolean constant. *)
   | Expr_str of string                  (** A string constant. *)