[Haskell-beginners] foldl on Bool:s

Rein Henrichs rein.henrichs at gmail.com
Fri Sep 25 22:16:23 UTC 2015


Note that you would like the elem function to stop at the matching element
and return True rather than checking the rest of the list needlessy, which
can be done with foldr but not with foldl. The actual implementation of
elem does this, so you can say:

> elem 1 [1..]
True

which would fail to terminate with the foldl version.

On Fri, Sep 25, 2015 at 11:10 AM goforgit . <teztingit at gmail.com> wrote:

> Thanks I got it now :)
>
> On Thu, Sep 24, 2015 at 9:45 PM, Kostiantyn Rybnikov <k-bx at k-bx.com>
> wrote:
>
>> Hi.
>>
>> Your function gets passed numbers one by one in the place of x, and its
>> previous result in the place of acc, and it returns a Bool. Initial value
>> in place of acc parameter ("previous result") is put as False (since you
>> begin with answer "no" to question "is it elem?").
>>
>> Hope this helps.
>> 24 вер. 2015 19:04 "goforgit ." <teztingit at gmail.com> пише:
>>
>>> Reading http://learnyouahaskell.com/higher-order-functions
>>>
>>> I understand that with the function
>>>
>>> sum' :: (Num a) => [a] -> a
>>> sum' = foldl (+) 0
>>>
>>> the call
>>>
>>> ghci>>> sum' [1,2,3]
>>>
>>> will be evaluated as
>>>
>>> 0 + 1 + 2 + 3 = 6
>>>
>>> But what about the function
>>>
>>> elem' :: (Eq a) => a -> [a] -> Bool
>>> elem' y ys = foldl (\acc x -> if x == y then True else acc) False ys
>>>
>>> and calling it with
>>>
>>> ghci>>> elem' 3 [1,2,3]
>>>
>>> How is that evaluated to True by foldl in elem'?
>>>
>>> Thanks in advance for any explanation to this!
>>>
>>> _______________________________________________
>>> Beginners mailing list
>>> Beginners at haskell.org
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>>
>>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>
>>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20150925/7b33559c/attachment-0001.html>


More information about the Beginners mailing list