perf: use concat_map for CCList.flat_map on >= 5.1

This commit is contained in:
Simon Cruanes 2023-12-15 22:37:35 -05:00
parent c4dcf1efe2
commit ad2ceb6e13
No known key found for this signature in database
GPG key ID: EBFFF6F283F3A2B4

View file

@ -376,24 +376,7 @@ let[@inline] flat_map f l =
[@@@else_] [@@@else_]
(* let flat_map = concat_map *) let flat_map = concat_map
let flat_map f l =
let rec direct i f l =
match l with
| [] -> []
| [ x ] -> f x
| [ x; y ] ->
let x = f x in
let y = f y in
append x y
| _ when i = 0 -> flat_map_kont f l Fun.id
| x :: y :: tl ->
let x = f x in
let y = f y in
let tl = direct (i - 1) f tl in
append x (append y tl)
in
direct 1000 f l
[@@@endif] [@@@endif]