Excerpts from daniel.is.fischer's message of Wed Nov 05 00:37:47 +0100 2008: > Am Mittwoch, 5. November 2008 00:08 schrieb Daryoush Mehrtash: > > Are there cases (function or list) where the result of foldl (or > > foldr)would be different that foldl' (or foldr')? > > > > thanks, > > > > daryoush > > Simple example: > 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.
Your example is a nice example of foldl over foldl', it would be nice to have it in the wiki page about the different folds[1]. Best regards, [1]: http://haskell.org/haskellwiki/Foldr_Foldl_Foldl%27 -- Nicolas Pouillard aka Ertai _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
