let biApply f (a, b) = (f a, f b)
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
|> biApply List.rev
printfn "%A" (splitAt 3 [2; 90; 1; 22])
bGV0IGJpQXBwbHkgZiAoYSwgYikgPSAoZiBhLCBmIGIpCgpsZXQgc3BsaXRBdCBuIGxpc3QgPSAKICBsZXQgc3BsaXR0ZXIgKCh4cywgeXMpLCBuJykgYyA9CiAgICBpZiBuJyA8IG4gdGhlbgogICAgICAoKGMgOjogeHMsIHlzKSwgbicgKyAxKQogICAgZWxzZQogICAgICAoKHhzLCBjIDo6IHlzKSwgbicgKyAxKQogIExpc3QuZm9sZCBzcGxpdHRlciAoKFtdLCBbXSksIDApIGxpc3QgCiAgfD4gZnN0IAogIHw+IGJpQXBwbHkgTGlzdC5yZXYKCnByaW50Zm4gIiVBIiAoc3BsaXRBdCAzIFsyOyA5MDsgMTsgMjJdKQ==