Vimal wrote:
Hi all,
I was surprised to find out that the following piece of code:
length [1..] > 10
isnt lazily evaluated! I wouldnt expect this to be a bug, but
in this case, shouldnt the computation end when the length function
evaluation goes something like:
10 + length [11..]
I suspect that > when defined on integers is strict in both arguments,
i.e., defined to not be lazily evaluated.
Even if it's not, when the reduction gets as far as "11 + length [12..]
> 10", *we* are smart enough to break apart the left-hand argument to
(>) and inspect the arguments to (+), observe that "length" will never
return a negative value, and concluded that we can stop evaluating. But
the implementation of (>) is not so smart.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe