Thank you Matthias for the pattern, its exactly what I needed. And thank you Jens for the trick of appending a dummy element to the list so you don't lose the last item in the list. I.e. (define (f1 lst) (define-values (result-list dummy1 dummy2) (for/fold ([result-list '()][prior '()] [current (first lst)]) [next (rest (append lst '()))] .... ... (values (cons result-item result-list ) current next))) (reverse result-list))
On Sat, May 26, 2012 at 11:50 AM, 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