Lets assume we don't have undefined in the list, are there functions (or properties in the function) that would cause foldl to have different results than foldl'?
daryoush
Am Mittwoch, 5. November 2008 00:08 schrieb Daryoush Mehrtash:
Simple example:> Are there cases (function or list) where the result of foldl (or
> foldr)would be different that foldl' (or foldr')?
>
> thanks,
>
> daryoush
import Data.List
weird :: Int -> Int -> Int
weird _ 0 = 0
weird x y = x*y
list :: [Int]
list = [1, 2, 3, 4, undefined, 6, 7, 8, 9, 0]
okey = foldl weird 1 list
boom = foldl' weird 1 list
*Main> okey
0
*Main> boom
*** Exception: Prelude.undefined
since foldl' evaluates strictly (to WHNF), it can die on encountering an
undefined value in the list where foldl doesn't.