> No, it would work with strict foldl too. In fact in the absence > of optimization it would work better (uses less time and space). > The optimization required is inlining and strictness analysis.
Is this also true if your just going to use the first few elements after reversing it? > A function which requires lazy foldl for correctness would have > to be sometimes lazy in its first argument, and at the same time > some partial results would have to be undefined. By "function" > I mean the first argument of foldl, treated as a binary function. > > Here this doesn't apply because flip (:) x y is always defined. And > another common case for foldl, sum, doesn't apply because (+) is > usually strict on both arguments (although in principle it does not > have to be true because of overloading, which implies that a compiler > can only optimize particular specializations of sum, not generic sum). > > I don't know of any real-life example. Yes you are right, my bad. I was thinking as if lists were not lazy on their elements, therefore my second example... But yes, now it is not a common example anymore. > Perhaps there are cases where evaluating partial results is correct > but inefficient. I don't know such case either. Just replace the errors on my second example by some big computations... J.A. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe