[Haskell-beginners] Foldl
Alexander Chen
alexander at chenjia.nl
Wed May 27 18:55:55 UTC 2020
Hi,
I guess it's time to get acquainted with foldr and foldl.
prelude>xs = [1..5] ++ undefined
prelude> foldr const 0 xs
1
I assume it goes something like this:
( 1 `const`(2 `const`(3 `const`(4 `const`(5 `const`(undefined `const` 0))))))
( 5 `const` undefined)
(4 `const` 5)
(3 `const` 4)
( 2 `const` 3)
(1 `const`2)
= 1
========================================================================
What i don't get is the opposite:
prelude> foldl const 0 xs
error
in my mind this should go like this:
((((((0`const`1)`const` 2) `const` 3 )`const` 4)`const` 5) `const` undefined)
(0 `const`2)
(0`const` 3)
( 0`const`4)
(0`const` 5)
(0 `const` undefined )
= 0
I have been told that the main difference between foldl and foldr is that foldl needs to evaluate the whole spline before it continues. And i guess that has something to do with it. What I don't understand is WHY foldl need to do this and foldr doesn't.
thanks in advance!
best,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20200527/c4a1852e/attachment.html>
More information about the Beginners
mailing list