Data.List.sort: force elements from start to end.
authorBertram Felgenhauer <int-e@gmx.de>
Wed, 21 Nov 2007 10:14:58 +0000 (10:14 +0000)
committerBertram Felgenhauer <int-e@gmx.de>
Wed, 21 Nov 2007 10:14:58 +0000 (10:14 +0000)
this prevents a stack overflow on  sort (take 10^6 [1..])

Data/List.hs

index 1c52b50..19dbc7d 100644 (file)
@@ -807,8 +807,8 @@ 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 xs [] = xs
 merge cmp (x:xs) (y:ys)
  = case x `cmp` y of
         GT -> y : merge cmp (x:xs)   ys