diff options
| -rw-r--r-- | lib/util.ml | 5 | ||||
| -rw-r--r-- | lib/util.mli | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/lib/util.ml b/lib/util.ml index 1bb69bf323..6632beaf29 100644 --- a/lib/util.ml +++ b/lib/util.ml @@ -501,6 +501,11 @@ let option_app f = function | None -> None | Some x -> Some (f x) +let option_compare f a b = match (a,b) with + | None, None -> true + | Some a', Some b' -> f a' b' + | _ -> failwith "option_compare" + let map_succeed f = let rec map_f = function | [] -> [] diff --git a/lib/util.mli b/lib/util.mli index 6bdc54b4ba..aa7042903d 100644 --- a/lib/util.mli +++ b/lib/util.mli @@ -156,6 +156,7 @@ val interval : int -> int -> int list val in_some : 'a -> 'a option val out_some : 'a option -> 'a val option_app : ('a -> 'b) -> 'a option -> 'b option +val option_compare : ('a -> 'b -> bool) -> 'a option -> 'b option -> bool (* In [map_succeed f l] an element [a] is removed if [f a] raises *) (* [Failure _] otherwise behaves as [List.map f l] *) |
