Danny is correct... ouch (/.\ <- covering my head in shame). Anyway to close the chapter on this, below is the final result using Danny's stream suggestions/code. I also have a non-streams version thanks to Erik (and Stephen and Joshua).
-Joe #lang racket (require racket/sequence) ; a sequence function that creates an "infinite" sequence then turns that into a stream that remembers its previous values as we walk across it. ; invoke in a loop-expr (see below) (define fib-stream (let ([fib-sequence (in-producer (fib) 'donttellmecauseithurts)]) (sequence->stream fib-sequence))) ; function to generate a list of all values in a stream < n (define (stream-less-than-n n strm) (let ([fib-val (stream-first strm)]) (if (>= fib-val n) '() (cons fib-val (stream-less-than-n n (stream-rest strm)))))) On Wed, Feb 15, 2012 at 9:19 AM, Danny Yoo <d...@cs.wpi.edu> wrote: > On Wed, Feb 15, 2012 at 3:10 AM, Joe Gilray <jgil...@gmail.com> wrote: > > The code that Danny wrote to create fib-stream works great with his > > peek-fibs function, but I really don't understand stream-first. > > > > I wrote: > > > > ; function to use the fib-stream to generate a list of all fibs < n > > (define (fib-stream-less-than-n n) > > (let ([fib-val (stream-first fib-stream)]) > > (if (>= fib-val n) '() (cons fib-val (fib-less-than-n n))))) > ^^^^^^^^^^^^^^^^ > > Are you sure you mean to use fib-less-than-n here? >
____________________ Racket Users list: http://lists.racket-lang.org/users