diff --git a/demo/quicksort b/demo/quicksort index b0339d3..3917ce2 100755 Binary files a/demo/quicksort and b/demo/quicksort differ diff --git a/demo/quicksort.crf b/demo/quicksort.crf index 61ab3a4..5728051 100644 --- a/demo/quicksort.crf +++ b/demo/quicksort.crf @@ -1,10 +1,6 @@ - -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 +data List a where + Nil : List a + Cons : a -> List a -> List a quicksort : List Int -> List Int quicksort xs = case xs of @@ -13,10 +9,20 @@ quicksort xs = case xs of let bigger = quicksort (filter (\y. a < y) xs) in smaller ++ (Cons a bigger) +.++ list1 list2 = case list1 of + Nil => list2 + Cons x xs => Cons x (xs ++ list2) + +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 + 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)) -