mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
fix insidious bug in CCList.flat_map
we have been accidentally relying on evaluation order.
This commit is contained in:
parent
7436727942
commit
c4dcf1efe2
1 changed files with 6 additions and 2 deletions
|
|
@ -372,16 +372,20 @@ let[@inline] flat_map f l =
|
|||
match l with
|
||||
| [] -> []
|
||||
| [ x ] -> f x
|
||||
| x :: tl -> flat_map_kont f l Fun.id
|
||||
| _ :: _ -> flat_map_kont f l Fun.id
|
||||
|
||||
[@@@else_]
|
||||
|
||||
(* let flat_map = concat_map *)
|
||||
let flat_map f l =
|
||||
let rec direct i f l =
|
||||
match l with
|
||||
| [] -> []
|
||||
| [ x ] -> f x
|
||||
| [ x; y ] -> append (f x) (f y)
|
||||
| [ 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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue