Send Beginners mailing list submissions to
        beginners@haskell.org

To subscribe or unsubscribe via the World Wide Web, visit
        http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
        beginners-requ...@haskell.org

You can reach the person managing the list at
        beginners-ow...@haskell.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."


Today's Topics:

   1.  Foldl (Alexander Chen)
   2. Re:  Foldl (Tony Morris)


----------------------------------------------------------------------

Message: 1
Date: Wed, 27 May 2020 20:55:55 +0200 (CEST)
From: Alexander Chen <alexan...@chenjia.nl>
To: beginners@haskell.org
Subject: [Haskell-beginners] Foldl
Message-ID: <399792716.37235.1590605755...@ichabod.co-bxl>
Content-Type: text/plain; charset="utf-8"

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-0001.html>

------------------------------

Message: 2
Date: Thu, 28 May 2020 07:33:58 +1000
From: Tony Morris <tonymor...@gmail.com>
To: beginners@haskell.org
Subject: Re: [Haskell-beginners] Foldl
Message-ID: <d75add66-7101-e6a6-00cf-89a0c3cb3...@gmail.com>
Content-Type: text/plain; charset="utf-8"

foldl does a loop, foldr does constructor replacement

https://www.youtube.com/watch?v=GPwtT31zKRY

On 5/28/20 4:55 AM, Alexander Chen wrote:
> 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,
> 
> _______________________________________________
> Beginners mailing list
> Beginners@haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: 
<http://mail.haskell.org/pipermail/beginners/attachments/20200528/a13e4316/attachment-0001.sig>

------------------------------

Subject: Digest Footer

_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners


------------------------------

End of Beginners Digest, Vol 143, Issue 16
******************************************

Reply via email to