At Sun, 22 Aug 2010 15:36:03 -0500, "Will M. Farr" wrote: > > Either choice --- error or stopping --- interacts awkwardly with > > `for*/vector'. If you've going to raise an exception, the natural thing > > to do with `for/vector' would be to stop as soon as the sequence goes > > too far. But `for*/vector' with a length currently just uses > > `for*/vector' without the length; you could check afterward, but that > > would be different than the natural choice for `for/vector'. > > > > Along similar lines, every `for/vector' is a `for*/vector' in a way, > > because a `#:when' clause can introduce a nesting. The `for/vector' > > macro with an without a length behaves very differently than the one > > with a length when a `#:when' clause is used. > > > > Maybe `for/vector' with a length clause should be syntactically > > restricted to have no `#:when' clauses, and maybe there just shouldn't > > be a variant of `for*/vector' that supports `#:length'. > > I'll make sure to throw a syntax error if I see a #:when in the for-clauses, > and I think I should give up on the for*/vector #:length variant. I was > hoping that you would have some sort of neat trick to keep a running counter > during the nested iteration....
Maybe you want to thread the vector index through using `for/fold' instead of drawing the index from a sequence. The expansion could insert enough `#:when' clauses to compare the index to the length before each nested iteration. _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev