Here is an alternative (not as efficient as MF's version). It uses that parallel for-loops stop when one of the sequences are empty.
#lang racket (define (running-average-of-3-alternative l) (for ([x (in-list (append l '(dummy)))] [y (in-list (cdr l))] [z (in-list (cddr l))]) (displayln (/ (+ x y z) 3)))) (running-average-of-3-alternative '(1 2 3 4 5 6 7 8 9 0)) (newline) (define (running-average-of-3 l2) (define-values (_1 _2) (for/fold ((current (second l2)) (prior (first l2))) ((next (rest (rest l2)))) (displayln (/ (+ prior current next) 3)) (values next current))) (void)) (running-average-of-3 '(1 2 3 4 5 6 7 8 9 0)) 2012/5/26 Ashok Bakthavathsalam <ash...@kggroup.com>: > The line (displayln (/ (+ prior current next))) needs to be changed to > (displayln (/ (+ prior current next) 3)) > > Thanks, > > > On Sat, May 26, 2012 at 9:20 PM, Matthias Felleisen <matth...@ccs.neu.edu> > wrote: >> >> >> Do you mean that if you operated on a list it would look like this: >> >> #lang racket >> >> (define (running-average-of-3 l2) >> (define-values (_1 _2) >> (for/fold ((current (second l2)) (prior (first l2))) ((next (rest (rest >> l2)))) >> (displayln (/ (+ prior current next))) >> (values next current))) >> (void)) >> >> (running-average-of-3 '(1 2 3 4 5 6 7 8 9 0)) >> >> >> >> >> On May 26, 2012, at 12:56 AM, Harry Spier wrote: >> >> > I can use for/fold to loop through a sequence while having the current >> > element and the previous element of the sequence still available by >> > doing something like this. >> > >> > (for/fold ([previous-element-in-sequence '()][list-being-created '()]) >> > ( [current-element-in-sequence sequence]) >> > (do some stuff) >> > .... >> > (values current-element-in-sequence >> > (cons something list-being-created))) >> > >> > But what I want is to be able to loop through a sequence while having >> > the prior, the current and the next element available. >> > >> > I'm sequencing through a representation of lines of a black and white >> > page of text showing where the black pixels are and from that >> > producing a graph showing the connectivity of the black pixel strips >> > on each line to the ones on the lines above and below it. >> > >> > Using for/fold I'm able to code the graph of connectedness of the >> > black strips on each line to the prior line in a very straightforward >> > way, but I'd like to graph in both directions both to the prior line >> > and to the next line at the same time. >> > >> > Is there a simple way to loop through a sequence and have the prior, >> > current and next element available at the same time. >> > >> > Thanks, >> > Harry >> > ____________________ >> > 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 > -- -- Jens Axel Søgaard ____________________ Racket Users list: http://lists.racket-lang.org/users