Buddha Buck writes:
: At 07:57 AM 04-03-2002 -0800, Larry Wall wrote:
: >Mark J. Reed writes:
: >:       loop (my $i=0; 1; $i++) {
: >:       </exegesis4>
: >
: >No, the scope of $i stays outside, per the previous decision.  If you
: >want it inside you can always make $i an official formal parameter:
: >
: >     for 0 .. Inf -> $i { ... }
: >
: >I think that better documents a counted infinite loop in any case.
: 
: Hmmm, in the more general case of:
: 
: for (my $i = intializer(); condition($i); $i = advance($i)) { ... }
: 
: where you might want $i to be lexically scoped in the for loop, is there a 
: way to do it?

Sure, just say

    { loop (my $i = intializer(); condition($i); $i = advance($i)) { ... } }

: Perhaps something like:
: 
: initalizer() -> $i { LOOP: NEXT { $i = advance($i); redo LOOP if 
: condition($i);} ... }
: 
: except I'm not sure that that would have the same semantics.

Other than that C<initializer> isn't going to be expecting a closure,
and C<redo> would bypass the NEXT, and there's no loop there to
C<redo>, and you'd have to make the parameter C<$i is rw>, why, it
should work find.  :-)

: (Or, more generally, given a for loop with a "my", how sould perl52perl6 
: deal with it?

Probably just by slapping an extra set of curlies around it.

Larry

Reply via email to