On Jul 25, 2012, at 5:51 PM, Jens Axel Søgaard wrote:

> 2012/7/25 Matthias Felleisen <[email protected]>:
>> 
>> Yes, the #:when clause has to be last. I got my reasoning backwards.
>> 
>> Do try both and report back. I am curious how expensive the ec is compared
>> to the #:when test.
> 
> It turned out that the for*/fold + #:when solution didn't behave as expected.
> Here is the documentation of for/vector :
> 
> --
> 
> (for/vector (for-clause ...) body ...+)
> (for/vector #:length length-expr (for-clause ...) body ...+)
> 
> Iterates like for/list, but the result are accumulated into a vector
> instead of a list. If the optional #:length form is used, then
> length-expr must evaluate to an exact-nonnegative-integer?, and the
> result vector is constructed with this length. In this case, the
> iteration can be performed more efficiently, and terminates when the
> vector is full or the requested number of iterations have been
> performed, whichever comes first.
> 
> --
> 
> I interpret this paragraph to mean, that
> 
>     (for/vector #:length 10 ([i (in-naturals)]) i)
> 
> ought to terminate - but it doesn't !
> 
> The question is now, whether the bug is in the documentation, the 
> implementation
> or my interpretation.


There is certainly a conflict between the docs and the behavior. 

I think the docs describe the desirable behavior so I suggest you
submit a bug report against the code. If this is wrong, I am sure 
Matthew will let us know. 


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to