On 02/11/05, Scherrer, Chad <[EMAIL PROTECTED]> wrote: > > > > Surely not... sum is defined by Haskell 98 as: > > > > sum = foldl (+) 0 > > > > and this is exactly what GHC provides. Furthermore we have > > specialised strict versions for Int and Integer. > > > > I'd been using ghci for testing along the way and getting terrible > results; does the specialization only apply to ghc per se? > > > > > Cheers, > > Simon > > > > Also, Cale, I was thinking about your comment about formal power series, > and I don't see that (+) should not be strict in this case. In > particular, if they are represented as infinite lists, I agree that > zipWith (+) works just fine, though it is strict but lazy. > > Here is the strictness: > zipWith (+) undefined [1,2,3] == undefined > zipWith (+) [1,2,3] undefined == undefined > > And here is the laziness: > head $ zipWith (+) (1:undefined) (2:undefined) == 3 > > Or am I missing something? > > -Chad >
Oh, well that's true, but I suppose that by strictness I mean that it doesn't completely force the evaluation of its arguments to normal form, as shown in the second example. If it was more strict, that would also be undefined, as would be the sum of any two infinite lists. I suppose it's somewhat of a matter of perspective: are you passing it a list, or a cons cell? In the case of power series, I was thinking of the whole power series as the parameter, not just the outermost data constructor. - Cale _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell