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