[racket] Strange behaviour with in-range

From: Nadeem Abdul Hamid (nadeem at acm.org)
Date: Fri Dec 30 17:55:12 EST 2011

The for form iterates by drawing an element from each sequence; if any
sequence is empty, then the iteration stops. So this:

(for ([i (in-range 2 4)]
       [j (in-range 1 2)])
 (printf "i = ~s   j = ~s\n" i j))

produces

i = 2   j = 1

at which point, the j sequence is now empty, so the entire iteration stops.

--- nadeem


On Fri, Dec 30, 2011 at 5:49 PM, Charles Turner <chturne at gmail.com> wrote:
> I'm noticing some unexpected behaviour with in-range:
>
>> (for ([i (in-range 2 4)])
>  (printf "i = ~s\n" i))
> i = 2
> i = 3
>
> that works as expected, but:
>
>> (for ([i (in-range 2 4)]
>        [j (in-range 1 2)])
>  (printf "i = ~s\n" i))
> i = 2
>
> why isn't '3' being picked up in the second example?
>
> Thanks,
>       Charles.
> ____________________
>  Racket Users list:
>  http://lists.racket-lang.org/users



Posted on the users mailing list.