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

Reply via email to