churf/demo/quicksort.crf
2023-05-23 16:10:03 +02:00

22 lines
633 B
Text

filter : (a -> Bool) -> List a -> List a
filter p xs = case xs of
Nil => Nil
Cons x xs => case p x of
True => Cons x (filter p xs)
False => filter p xs
quicksort : List Int -> List Int
quicksort xs = case xs of
Nil => Nil
Cons a as => let smaller = quicksort (filter (\y. y < a) xs) in
let bigger = quicksort (filter (\y. a < y) xs) in
smaller ++ (Cons a bigger)
mkDescList : Int -> Int -> List Int
mkDescList from to = case from == to of
True => Nil
False => Cons from (mkDescList (from - 1) to)
main = printList (quicksort (mkDescList 1000 0))