let splitAt n list =
let splitter ((xs, ys), n') c =
if n' < n then
((c :: xs, ys), n' + 1)
else
((xs, c :: ys), n' + 1)
List.fold splitter (([], []), 0) list
|> fst
|> (fun (xs, ys) -> (List.rev xs, List.rev ys))
printfn "%A" (splitAt 3 [2; 90; 1; 22])
bGV0IHNwbGl0QXQgbiBsaXN0ID0gCiAgbGV0IHNwbGl0dGVyICgoeHMsIHlzKSwgbicpIGMgPQogICAgaWYgbicgPCBuIHRoZW4KICAgICAgKChjIDo6IHhzLCB5cyksIG4nICsgMSkKICAgIGVsc2UKICAgICAgKCh4cywgYyA6OiB5cyksIG4nICsgMSkKICBMaXN0LmZvbGQgc3BsaXR0ZXIgKChbXSwgW10pLCAwKSBsaXN0IAogIHw+IGZzdCAKICB8PiAoZnVuICh4cywgeXMpIC0+IChMaXN0LnJldiB4cywgTGlzdC5yZXYgeXMpKQoKcHJpbnRmbiAiJUEiIChzcGxpdEF0IDMgWzI7IDkwOyAxOyAyMl0p