Graham Klyne writes: : | Ah, yes. I've grown a little wary of foldl, but I see it's | appropriate in this case. As it's part of the standard prelude, I | personally have no qualms about depending upon it ... or should I?
(Hope you don't mind my returning this to haskell-cafe.) Most of foldl's bad reputation comes from stack overflows, because it builds deeply nested suspensions such as foldl f z [1..99] --> f (... (f (f z 1) 2) ...) 99 *regardless* of the strictness of f. Contrast that with foldr foldr f z [1..99] --> f 1 (foldr f z [2..99]) which enters f straight away. Your particular f, i.e. add, is strict in both its parameters, so I don't think the choice between foldl and foldr will affect whether you get stack overflows. However, if you do get stack overflows, try a strict folding function, such as a copy of Hugs's Prelude.foldl' (not exported). - Tom _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe