aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/util.ml3
-rw-r--r--lib/util.mli1
2 files changed, 4 insertions, 0 deletions
diff --git a/lib/util.ml b/lib/util.ml
index d71912289d..cdd3519301 100644
--- a/lib/util.ml
+++ b/lib/util.ml
@@ -853,6 +853,9 @@ let rec list_skipn n l = match n,l with
| _, [] -> failwith "list_skipn"
| n, _::l -> list_skipn (pred n) l
+let rec list_skipn_at_least n l =
+ try list_skipn n l with Failure _ -> []
+
let rec list_addn n x l =
if n = 0 then l else x :: (list_addn (pred n) x l)
diff --git a/lib/util.mli b/lib/util.mli
index 6ab9ce7c4b..7784635c3c 100644
--- a/lib/util.mli
+++ b/lib/util.mli
@@ -172,6 +172,7 @@ val list_firstn : int -> 'a list -> 'a list
val list_last : 'a list -> 'a
val list_lastn : int -> 'a list -> 'a list
val list_skipn : int -> 'a list -> 'a list
+val list_skipn_at_least : int -> 'a list -> 'a list
val list_addn : int -> 'a -> 'a list -> 'a list
val list_prefix_of : 'a list -> 'a list -> bool
(* [list_drop_prefix p l] returns [t] if [l=p++t] else return [l] *)