diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/util.ml | 3 | ||||
| -rw-r--r-- | lib/util.mli | 1 |
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] *) |
