quicksort works

This commit is contained in:
sebastianselander 2023-05-11 11:14:44 +02:00
parent 49ef3f9f7c
commit 5e1c81beb7

View file

@ -1,3 +1,21 @@
toStr : List Int -> List Char
toStr xs = case xs of
Cons a as => Cons (toChar a) (toStr as)
Nil => Nil
toChar : Int -> Char
toChar x = case x of
0 => '0'
1 => '1'
2 => '2'
3 => '3'
4 => '4'
5 => '5'
6 => '6'
7 => '7'
8 => '8'
9 => '9'
filter p xs = case xs of
Nil => Nil
Cons x xs => case p x of
@ -8,16 +26,29 @@ filter p xs = case xs of
Nil => bs
Cons x xs => Cons x (xs ++ bs)
.<= a b = case a < b of
False => a == b
True => True
.:: a as = Cons a as
quicksort : List Int -> List Int
quicksort xs = case xs of
Nil => Nil
Cons a as => quicksort (filter (\y. a < y) xs) ++ (Cons a (quicksort (filter (\y. y <= a)) xs))
Cons a as => let smaller = quicksort (filter (\y. y < a) xs)
in let bigger = quicksort (filter (\y. a < y) xs)
in smaller ++ (a :: bigger)
head xs = case xs of
Cons a _ => a
descList : Int -> Int -> List Int
descList from to = case to < from of
False => Cons to (descList from (to - 1))
True => Nil
main : Int
main = head (quicksort (Cons 9 (Cons 8 (Cons 7 (Cons 6 (Cons 5 (Cons 4 (Cons 3 (Cons 2 (Cons 1 (Cons 0 Nil)))))))))))
main = let list = (5 :: (2 :: (8 :: (9 :: (6 :: (0 :: (1 :: Nil)))))))
in printStr (toStr (quicksort list))
{-
-- Program output --
0125689
In dispose
Out dispose
ExitSuccess
-}