[racket] Calculating cumulative sum of the list

From: Michael Wilber (gcr at sneakygcr.net)
Date: Thu Jan 22 20:38:49 EST 2015

Here's one way, but it's not tail-recursive:

racket@> (define (cumsum lst [so-far 0])
           (match lst
             ['() '()]
             [(cons first rest)
              (cons (+ so-far first)
                    (cumsum rest (+ so-far first)))]))

racket@> (cumsum '(1 3 5 7))
'(1 4 9 16)

William James <w_a_x_man at yahoo.com> writes:
> Here's a way using map-accum in Gauche.
>
> (use gauche.collection)
>
> (define (cumulative-sums xs)
>   (map-accum (lambda (x sum) (values (+ x sum) (+ x sum))) 0 xs))
>
> (cumulative-sums '(1 3 5 7))
>  ===>
> (1 4 9 16)
>
>
> --------------------------------------------
> On Thu, 1/22/15, Alexandr M <rus314 at gmail.com> wrote:
>
>  Subject: [racket] Calculating cumulative sum of the list
>  To: users at racket-lang.org
>  Date: Thursday, January 22, 2015, 7:53 AM
>
>  Hello,
>
>  I am trying to replicate functionality of this code in
>  Python:
>
>  https://gist.github.com/m-blog/22b7c5d31b3839ffba50#file-cumsum-py
>
>  in Racket without usage of any libraries.
>
>  What would the most optimal / concise way to do it in
>  Racket?
>
>  Thank you.
>
>  --
>  Best regards,
>  Alex
>
>
>  -----Inline Attachment Follows-----
>
>  ____________________
>    Racket Users list:
>    http://lists.racket-lang.org/users
>
>
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users


Posted on the users mailing list.