Ich habe eine einfache f# schnelle Sortierfunktion definiert als:
let rec qsort(xs:List<int>) =
let smaller = xs |> List.filter(fun e -> e < xs.Head)
let larger = xs |> List.filter(fun e -> e > xs.Head)
match xs with
| [] -> []
| _ -> qsort(smaller)@[xs.Head]@qsort(larger)
Gibt es eine Möglichkeit, in f# zu schreiben es mehr wie Haskell:
qsort :: [Int] -> [Int]
qsort [] = []
qsort (x:xs) =
qsort smaller ++ [x] ++ qsort larger
where
smaller = [a | a <- xs, a <= x]
larger = [b | b <- xs, b >= x]
Ich weiß, dass dem f#-Algorithmus ein <= und >= fehlt. Die Frage bezieht sich eher auf die Syntax/Lesbarkeit.
Danke.