let rec qsort = function | [] -> [] | h::t -> qsort [for e in h do if (e <= h) then yield e] @ [h] @ qsort [for e in h do if (e > h) then yield e] let r = new System.Randon() let main() = let sample = List.init 300 (fun _-> r.Next(int.MaxValue)) System.Console.WriteLine(qsort sample)