[Haskell-cafe] Is there a library that has a strict version of `sum`?

Artem Pelenitsyn a.pelenitsyn at gmail.com
Tue Aug 14 19:56:33 UTC 2018


Damian,

thank you for this question, The discussion was thought-provoking for me.
Going back to your original inquiry, by the way, I've just noticed this
prelude where `sum` and `product` are strict:
https://github.com/serokell/universum

Bryan,

I still fail to see (in this thread also) any rationale for lazy `sum`. I
looked at this2014 Reddit thread, and it seems that not only I am puzzled:
https://www.reddit.com/r/haskell/comments/2agxcb/why_is_sum_lazy/

There is also an opinion (from quite authoritative source, may I add)  that
`foldl` should be strict, not just `sum`: http://www.well-typed.com/blog/90/

I wonder what does libraries committee think about all that. One way to
find… https://mail.haskell.org/cgi-bin/mailman/listinfo/libraries

--
Best, Artem

On Tue, 14 Aug 2018 at 22:37 Bryan Richter <b at chreekat.net> wrote:

> On 08/14/2018 02:57 PM, Damian Nadales wrote:
> >
> >
> > On Tue, Aug 14, 2018 at 8:10 PM Vanessa McHale <vanessa.mchale at iohk.io
> <mailto:vanessa.mchale at iohk.io>> wrote:
> >
> >     Yes, that was what I was never quite clear on. What is your *actual
> problem, in context*, not the problem you think you have because you read
> elsewhere that foldl' is more efficient?
> >
> >
> > The problem I have is that sum consumes huge amount of memory. In
> particular I'm modeling the Chimeric ledgers described in this paper
> https://eprint.iacr.org/2018/262.pdf. In several places I have to
> > sum up values in different lists, and as soon as I try this with large
> lists the memory usage blows up. So that's my concrete scenario.
> >
> > In view of this, I though, "I can write this replacing `sum` by `foldl'
> (+) 0` but wouldn't be nice if this function was defined already somewhere
> else?" That's it.
> >
> > Please ignore this if it is a silly question, and my apologies in
> advance.
> >
>
> I think your question is not silly, and quite reasonable. I think that
> giving more context up front, however, would have helped people understand
> what your were actually asking. Based solely on what
> you wrote, you might have been someone who was summing [1..10] for the
> first time ever and looking for that hypothetical foldl/foldl' analogue,
> like Vanessa said. :) Being specific helps.
>
> Having said all that, I am also surprised that `sum [1..100000000]` blows
> up! (But now I see others are responding with rationale for that.)
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20180814/a4b2ddaa/attachment.html>


More information about the Haskell-Cafe mailing list