I would like to make a function that accepts a list and returns two lists: the first contains every odd item, and the second contains every even item.
For example, given [1;2;4;6;7;9]
, I would like to return [ [1;4;7] ; [2;6;9] ]
.
I have written this so far and I do not know how to progress.
let splitList list =
let rec splitOdd oList list1 list2 =
match oList with
| [] -> []
| head :: tail -> splitEven tail (list1::head) list2
and splitEven oList list1 list2 =
match oList with
| [] -> []
| head :: tail -> splitOdd tail list1 (list2::head)
splitOdd list [] []
Implementation which does not stack-overflows:
let splitList list = List.foldBack (fun x (l,r) -> x::r, l) list ([],[])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With