do simplify the code a bit

closer to the original solution, too. Avoids a redundant `:= []`.
This commit is contained in:
Simon Cruanes 2025-12-20 11:15:15 -05:00
parent ddc87518a7
commit c72b60fd6f
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4

View file

@ -821,14 +821,14 @@ let take_drop n l =
(* fun idea from nojb in (* fun idea from nojb in
https://discuss.ocaml.org/t/efficient-implementation-of-list-split/17616/2 *) https://discuss.ocaml.org/t/efficient-implementation-of-list-split/17616/2 *)
let[@tail_mod_cons] rec loop (res_drop : _ ref) n l = let[@tail_mod_cons] rec loop (res_drop : _ ref) n l =
match n, l with match l with
| 0, _ -> | [] -> []
| x :: tl ->
if n = 0 then (
res_drop := l; res_drop := l;
[] []
| _, [] -> ) else
res_drop := []; x :: loop res_drop (n - 1) tl
[]
| _, x :: tl -> x :: loop res_drop (n - 1) tl
in in
let res_drop = ref [] in let res_drop = ref [] in
let res_take = loop res_drop n l in let res_take = loop res_drop n l in