[Haskell-cafe] Time consumption nub
Arie Groeneveld
bradypus at xs4all.nl
Thu Jul 19 15:12:06 EDT 2007
I tried this version,
> however....
>>> nsortBy cmp l = mergesort compare l
> should be:
>
> nsortBy cmp l = mergesort cmp l
>
> Thanks
Sorry, with this version I meant:
> nsort l = mergesort compare l
> nsortBy cmp l = mergesort compare l
>
> mergesort :: (a -> a -> Ordering) -> [a] -> [a]
> mergesort cmp = mergesort' cmp . map wrap
>
> mergesort' :: (a -> a -> Ordering) -> [[a]] -> [a]
> mergesort' cmp [] = []
> mergesort' cmp [xs] = xs
> mergesort' cmp xss = mergesort' cmp (merge_pairs cmp xss)
>
> merge_pairs :: (a -> a -> Ordering) -> [[a]] -> [[a]]
> merge_pairs cmp [] = []
> merge_pairs cmp [xs] = [xs]
> merge_pairs cmp (xs:ys:xss) = merge cmp xs ys : merge_pairs cmp xss
>
> merge :: (a -> a -> Ordering) -> [a] -> [a] -> [a]
> merge cmp xs [] = xs
> merge cmp [] ys = ys
> merge cmp (x:xs) (y:ys)
> = case x `cmp` y of
> GT -> y : merge cmp (x:xs) ys
> LT -> x : merge cmp xs (y:ys)
> EQ -> x : merge cmp xs ys
>
> wrap :: a -> [a]
> wrap x = [x]
>
More information about the Haskell-Cafe
mailing list