I've always thought that compilers for functional languages were able to recognize tail recursion and to transform it into a loop.
So, why this line eats all my machine's memory (and then runs out of stack space)?
sum [1..10000000] -- ten millions
The definition of 'sum' in the standard library is too lazy. Try:
mysum l = sum' l 0
where
sum' [] a = a
sum' (x:xs) a = let s = a+x in s `seq` sum' xs sPerhaps someone with a better understanding can explain why the 'sum' in the library is defined the way it is (the standard defines it based on foldl, which is also lazy). Is there a valid program that can demonstrate a difference between 'mysum' and the library's 'sum' function?
Dave _______________________________________________ Glasgow-haskell-users mailing list [email protected] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
