aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/util.ml5
-rw-r--r--lib/util.mli1
2 files changed, 6 insertions, 0 deletions
diff --git a/lib/util.ml b/lib/util.ml
index cc2f514a40..e17e586c20 100644
--- a/lib/util.ml
+++ b/lib/util.ml
@@ -206,6 +206,11 @@ let list_firstn n l =
in
aux [] (n,l)
+let rec list_last = function
+ | [] -> failwith "list_last"
+ | [x] -> x
+ | _ :: l -> list_last l
+
let list_lastn n l =
let len = List.length l in
let rec aux m l =
diff --git a/lib/util.mli b/lib/util.mli
index 2a8b3ced50..35d181098d 100644
--- a/lib/util.mli
+++ b/lib/util.mli
@@ -67,6 +67,7 @@ val list_uniquize : 'a list -> 'a list
val list_subset : 'a list -> 'a list -> bool
val list_splitby : ('a -> bool) -> 'a list -> 'a list * 'a list
val list_firstn : int -> 'a list -> 'a list
+val list_last : 'a list -> 'a
val list_lastn : int -> 'a list -> 'a list
val list_prefix_of : 'a list -> 'a list -> bool
(* [map_append f [x1; ...; xn]] returns [(f x1)@(f x2)@...@(f xn)] *)