Fix quicksort example
This commit is contained in:
parent
2d41dac6eb
commit
e1bb5760e0
1 changed files with 5 additions and 2 deletions
44
sample-programs/working/quicksort.crf
Normal file
44
sample-programs/working/quicksort.crf
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
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 : (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
|
||||
|
||||
.++ : List a -> List a -> List a
|
||||
.++ as bs = case as of
|
||||
Nil => bs
|
||||
Cons x xs => Cons x (xs ++ bs)
|
||||
|
||||
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)
|
||||
|
||||
descList : Int -> Int -> List Int
|
||||
descList from to = case to < from of
|
||||
False => Cons to (descList from (to - 1))
|
||||
True => Nil
|
||||
|
||||
main = let list = Cons 5 (Cons 2 (Cons 8 (Cons 9 (Cons 6 (Cons 0 (Cons 1 Nil)))))) in
|
||||
printStr (toStr (quicksort list))
|
||||
Loading…
Add table
Add a link
Reference in a new issue