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_...@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 <rus...@gmail.com> wrote: > > Subject: [racket] Calculating cumulative sum of the list > To: users@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 ____________________ Racket Users list: http://lists.racket-lang.org/users