From 8aab9be00adcdc2b13150db4a963ee6123f447c2 Mon Sep 17 00:00:00 2001 From: herbelin Date: Fri, 18 Jan 2002 15:28:44 +0000 Subject: List.map avec ordre des effets de bord garanti git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@2410 85f007b7-540e-0410-9357-904b9bb8a0f7 --- lib/util.ml | 7 +++++++ lib/util.mli | 1 + 2 files changed, 8 insertions(+) (limited to 'lib') diff --git a/lib/util.ml b/lib/util.ml index 5a02ffaef8..0f5b3dbf5f 100644 --- a/lib/util.ml +++ b/lib/util.ml @@ -121,6 +121,13 @@ let list_assign l n e = in assrec [] (l,n) +let list_map_left f = (* ensures the order in case of side-effects *) + let rec map_rec = function + | [] -> [] + | x::l -> let v = f x in v :: map_rec l + in + map_rec + let list_map_i f = let rec map_i_rec i = function | [] -> [] diff --git a/lib/util.mli b/lib/util.mli index 60504d9cf3..2ed595ef1e 100644 --- a/lib/util.mli +++ b/lib/util.mli @@ -65,6 +65,7 @@ val list_tabulate : (int -> 'a) -> int -> 'a list val list_assign : 'a list -> int -> 'a -> 'a list val list_distinct : 'a list -> bool val list_filter2 : ('a -> 'b -> bool) -> 'a list * 'b list -> 'a list * 'b list +val list_map_left : ('a -> 'b) -> 'a list -> 'b list val list_map_i : (int -> 'a -> 'b) -> int -> 'a list -> 'b list val list_map2_i : (int -> 'a -> 'b -> 'c) -> int -> 'a list -> 'b list -> 'c list -- cgit v1.2.3