From 27ea35bafdf0aefe1dcf49dfed1a18c3f158efa5 Mon Sep 17 00:00:00 2001 From: herbelin Date: Sat, 28 Apr 2007 13:56:03 +0000 Subject: Ajout de la possibilité de faire référence dans certains cas à un nom par sa notation (p.ex. pour unfold ou pour lazy delta). Ex: Goal 3+4 = 7. unfold "+". git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@9804 85f007b7-540e-0410-9357-904b9bb8a0f7 --- lib/util.ml | 5 +++++ lib/util.mli | 1 + 2 files changed, 6 insertions(+) (limited to 'lib') diff --git a/lib/util.ml b/lib/util.ml index ee373120e2..8b3fb2428b 100644 --- a/lib/util.ml +++ b/lib/util.ml @@ -778,6 +778,11 @@ let option_smartmap f a = match a with | None -> a | Some x -> let x' = f x in if x'==x then a else Some x' +let rec filter_some = function + | [] -> [] + | None::l -> filter_some l + | Some a::l -> a :: filter_some l + let map_succeed f = let rec map_f = function | [] -> [] diff --git a/lib/util.mli b/lib/util.mli index afa11d31dc..8a406519e8 100644 --- a/lib/util.mli +++ b/lib/util.mli @@ -216,6 +216,7 @@ val option_fold_left2 : ('a -> 'b -> 'c -> 'a) -> 'a -> 'b option -> val option_iter : ('a -> unit) -> 'a option -> unit val option_compare : ('a -> 'b -> bool) -> 'a option -> 'b option -> bool val option_smartmap : ('a -> 'a) -> 'a option -> 'a option +val filter_some : 'a option list -> 'a list (* In [map_succeed f l] an element [a] is removed if [f a] raises *) (* [Failure _] otherwise behaves as [List.map f l] *) -- cgit v1.2.3