in
aux l
+let split_nth n l =
+ let rec aux acc n l =
+ match n, l with
+ | 0, _ -> List.rev acc, l
+ | n, [] -> raise (Failure "HExtlib.split_nth")
+ | n, hd :: tl -> aux (hd :: acc) (n - 1) tl in
+ aux [] n l
+
(** {2 File predicates} *)
let is_dir fname =
val is_dir_empty: string -> bool (** checks if the dir is empty *)
val rmdir_descend: string -> unit (** rmdir -p *)
-
(** find all _files_ whose name matches test under a filesystem root.
* Test is passed the filename path relative to the given filesystem root *)
val find: ?test:(string -> bool) -> string -> string list
val list_findopt: ('a -> 'b option) -> 'a list -> 'b option
val flatten_map: ('a -> 'b list) -> 'a list -> 'b list
+ (** split_nth n l
+ * @returns two list, the first contains at least n elements, the second the
+ * remaining one
+ * @raise Failure when List.length l < n *)
+val split_nth: int -> 'a list -> 'a list * 'a list
+
(** {2 Debugging & Profiling} *)
type profiler = { profile : 'a 'b. ('a -> 'b) -> 'a -> 'b }