
10 Mar
2009
10 Mar
'09
4:54 p.m.
Adrian Neumann wrote:
Notice that there is no difference between
foldr g a foldl f a
(for appropriate g and f) if g and f are strict in both arguments.
Be careful... as apfelmus noted elsewhere in this thread, that's not (in general) true. Prelude> foldr (^) 2 [3,5] 847288609443 Prelude> foldl (^) 2 [3,5] 32768 The reason? Integer exponentiation (^) isn't associative and commutative. So the first is (3 ^ (5^2)) = 3^25, while the second is ((2 ^ 3) ^ 5) = 2^15. Cheers, John