[racket] Calculating cumulative sum of the list

From: Jack Firth (jackhfirth at gmail.com)
Date: Thu Jan 22 16:23:19 EST 2015

Add memoization to fix that

(define (memo f)
  (let ([cache (make-hash)])
    (lambda xs
      (hash-ref! cache xs (thunk (apply f xs))))))

(define (cumulative-sum xs)
  (map (memo (curry foldl + 0))
           (build-list (length xs)
                           (compose (curry take xs)
                                            add1))))

On Thu, Jan 22, 2015 at 11:21 AM, Matthias Felleisen <matthias at ccs.neu.edu>
wrote:

>
> Consider the performance implications.
>
>
> On Jan 22, 2015, at 1:59 PM, Jack Firth <jackhfirth at gmail.com> wrote:
>
> > If you're using all of racket, here's a way to do it with heavy usage of
> higher order functions
> >
> > #lang racket
> >
> > (define (cumulative-sum xs)
> >   (map (curry foldl + 0)
> >            (build-list (length xs)
> >                            (compose (curry take xs)
> >                                             add1))))
> >
> > On Thu, Jan 22, 2015 at 6:34 AM, Matthias Felleisen <
> matthias at ccs.neu.edu> wrote:
> >
> > #lang racket
> >
> > ;; [Listof Number] -> [Listof Number]
> > ;; given (a b c ...) produce (a (+ a b) (+ a b c) ...)
> > (define (cumulative-sum l #;"final private:" [so-far 0])
> >   (cond
> >     [(empty? l) '()]
> >     [else (define next (+ so-far (first l)))
> >           (cons next (cumulative-sum (rest l) next))]))
> >
> > (module+ main
> >   (cumulative-sum '(1 2 3)))
> >
> > ;; The comments are HtDP-style, but the optional entry parameter is not
> available in the teaching languages.
> >
> >
> > On Jan 22, 2015, at 8:53 AM, Alexandr M <rus314 at gmail.com> wrote:
> >
> > > 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
> > > ____________________
> > >  Racket Users list:
> > >  http://lists.racket-lang.org/users
> >
> >
> > ____________________
> >   Racket Users list:
> >   http://lists.racket-lang.org/users
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20150122/ea9b5a3c/attachment-0001.html>

Posted on the users mailing list.