On Sat, Feb 18, 2012 at 12:51:23AM -0800, Joe Gilray wrote: > OK, I read some more and played around and got the behavior I wanted as > follows: > > (define primes-from-to > (let ([lastend 0] [storedlst '()])
This means that these variables are created once, while creating the value for 'prime-from-to' [which ends up being a function]. Your original was impicitly (define primes-from-to (lambda (start end) (let ([lastend 0] [storedlst '()]) <etc>))) which meant those variable would be created locally each time the lambda [via 'primes-from-to'] was called. > (lambda (start end) [...] > (filter (lambda (v) (if (and (>= v start) (<= v end)) #t #f)) > storedlst) > ))) [...] Consider just (lambda (v) (and (>= v start) (<= v end))) --- no 'if'. For symmetry put 'v' in order between start, end: (and (<= start v) (<= v end)) . That inspires: (<= start v end) . ____________________ Racket Users list: http://lists.racket-lang.org/users