let rec length l = match l with [] -> 0 | _ :: tl -> 1 + length tl let rec make_list e k = if k = 0 then [] else e :: make_list e (pred k) let rec find_if pred l = match l with [] -> None | e :: t -> if pred e then Some e else find_if pred t let iota n = List.init n (fun x -> x) let time f = let start = Sys.time () in let _ = f () in Sys.time () -. start