aux 0 l
;;
+let list_index p =
+ let rec aux n =
+ function
+ [] -> None
+ | he::_ when p he -> Some (n,he)
+ | _::tl -> aux (n + 1) tl
+ in
+ aux 0
+;;
+
let rec list_iter_default2 f l1 def l2 =
match l1,l2 with
| [], _ -> ()
in
aux []
+let list_iter_sep ~sep f =
+ let rec aux =
+ function
+ | [] -> ()
+ | [ last ] -> f last
+ | hd :: tl -> f hd; sep (); aux tl
+ in
+ aux
+
let rec list_findopt f l =
let rec aux k = function
| [] -> None
let l = List.rev l in
try List.hd l with exn -> raise (Failure "HExtlib.list_last")
;;
-
+
+let rec list_assoc_all a = function
+ | [] -> []
+ | (x, y) :: tl when x = a -> y :: list_assoc_all a tl
+ | _ :: tl -> list_assoc_all a tl
+;;
+
(** {2 File predicates} *)
let is_dir fname =