diff options
| author | herbelin | 2006-10-09 15:59:23 +0000 |
|---|---|---|
| committer | herbelin | 2006-10-09 15:59:23 +0000 |
| commit | c03b138c8c5e85ca1636465582c3242f50415a73 (patch) | |
| tree | 3d3229d67739564d283493280efce872f6cd8b51 | |
| parent | c1624954bb4f88b611528b16013dcb659c02ed47 (diff) | |
Ajout combinateurs option_fold_left et name_fold_map
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@9225 85f007b7-540e-0410-9357-904b9bb8a0f7
| -rw-r--r-- | lib/util.ml | 4 | ||||
| -rw-r--r-- | lib/util.mli | 1 | ||||
| -rw-r--r-- | library/nameops.ml | 4 | ||||
| -rw-r--r-- | library/nameops.mli | 2 |
4 files changed, 11 insertions, 0 deletions
diff --git a/lib/util.ml b/lib/util.ml index dc25caefee..38eb88ebfa 100644 --- a/lib/util.ml +++ b/lib/util.ml @@ -737,6 +737,10 @@ let option_fold_left2 f e a b = match (a,b) with | Some x, Some y -> f e x y | _ -> e +let option_fold_left f e a = match a with + | Some x -> f e x + | _ -> e + let option_fold_right f a e = match a with | Some x -> f x e | _ -> e diff --git a/lib/util.mli b/lib/util.mli index 9951aa1c57..f38f36740c 100644 --- a/lib/util.mli +++ b/lib/util.mli @@ -209,6 +209,7 @@ val out_some : 'a option -> 'a val option_map : ('a -> 'b) -> 'a option -> 'b option val option_cons : 'a option -> 'a list -> 'a list val option_fold_right : ('a -> 'b -> 'b) -> 'a option -> 'b -> 'b +val option_fold_left : ('a -> 'b -> 'a) -> 'a -> 'b option -> 'a val option_fold_left2 : ('a -> 'b -> 'c -> 'a) -> 'a -> 'b option -> 'c option -> 'a val option_iter : ('a -> unit) -> 'a option -> unit diff --git a/library/nameops.ml b/library/nameops.ml index e4c75bd760..b68c095936 100644 --- a/library/nameops.ml +++ b/library/nameops.ml @@ -154,6 +154,10 @@ let name_app f = function | Name id -> Name (f id) | Anonymous -> Anonymous +let name_fold_map f e = function + | Name id -> let (e,id) = f e id in (e,Name id) + | Anonymous -> e,Anonymous + let next_name_away_with_default default name l = match name with | Name str -> next_ident_away str l diff --git a/library/nameops.mli b/library/nameops.mli index 8dd2f6d74d..895513a3c0 100644 --- a/library/nameops.mli +++ b/library/nameops.mli @@ -38,6 +38,8 @@ val out_name : name -> identifier val name_fold : (identifier -> 'a -> 'a) -> name -> 'a -> 'a val name_cons : name -> identifier list -> identifier list val name_app : (identifier -> identifier) -> name -> name +val name_fold_map : ('a -> identifier -> 'a * identifier) -> 'a -> name -> 'a * name + val pr_lab : label -> Pp.std_ppcmds |
