aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authornotin2008-07-24 11:16:48 +0000
committernotin2008-07-24 11:16:48 +0000
commit417653e0119f8b7479d9a52725c4cb32b3d4af14 (patch)
tree1d33265784b3cb1365ef706143d9207ed114e7a5 /lib
parent80921b2f279b70f60cb66684f88c7e6f180f8117 (diff)
Suite commit 11236
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@11252 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'lib')
-rw-r--r--lib/util.ml4
-rw-r--r--lib/util.mli1
2 files changed, 5 insertions, 0 deletions
diff --git a/lib/util.ml b/lib/util.ml
index 2a60ad7b02..549b79e786 100644
--- a/lib/util.ml
+++ b/lib/util.ml
@@ -863,6 +863,10 @@ let list_cartesians op init ll =
let list_combinations l = list_cartesians (fun x l -> x::l) [] l
+(* Drop the last element of a list *)
+
+let rec list_drop_last = function [] -> assert false | hd :: [] -> [] | hd :: tl -> hd :: list_drop_last tl
+
(* Arrays *)
let array_exists f v =
diff --git a/lib/util.mli b/lib/util.mli
index a341fa5a29..d845dd2ebf 100644
--- a/lib/util.mli
+++ b/lib/util.mli
@@ -156,6 +156,7 @@ val list_skipn : int -> 'a list -> 'a list
val list_addn : int -> 'a -> 'a list -> 'a list
val list_prefix_of : 'a list -> 'a list -> bool
val list_drop_prefix : 'a list -> 'a list -> 'a list
+val list_drop_last : 'a list -> 'a list
(* [map_append f [x1; ...; xn]] returns [(f x1)@(f x2)@...@(f xn)] *)
val list_map_append : ('a -> 'b list) -> 'a list -> 'b list
val list_join_map : ('a -> 'b list) -> 'a list -> 'b list