[racket] Calculating cumulative sum of the list
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