On 20 Sep 2002, Aaron Sherman wrote:
: On Fri, 2002-09-20 at 10:36, Larry Wall wrote:
: > On Thu, 19 Sep 2002, Brent Dax wrote:
: 
: > : (An aside: it strikes me that you could use C<given> as a scoped lexical
: > : alias, i.e.
: > :   given $bar -> $foo {
: > :           print $foo;
: > :   }
: 
: > Sure, though it also aliases to $_.
: > 
: 
: Does that mean that I can't
: 
:         for $x -> $_ {
:               for $y -> $z {
:                       print "$_, $z\n";
:               }
:         }
: 
: And expect to get different values?

That's correct.  Name the outer topic explicitly, not the inner one.

: > : # signatureless sub: A sub that does not specify a prototype, 
: > : # and thus has a default prototype of:
: > : # 
: > : #         sub($_//=$_){};
: > : # 
: > : # ne?
: > : 
: > : More like:
: > : 
: > :   a sub that was created with the arrow (->) or a bare block and 
: > :   does not specify a prototype, and thus has a default prototype
: > :   of:
: > : 
: > :           -> ($_ //= $OUTER::_) { };
: > 
: > OUTER only works for lexical scopes.  What you want is out-of-band access
: > to the $_ in the surrounding dynamic context
: > 
: 
: I assumed that's what C<//=$_> was. It does have the disadvantage of
: looking like variable assignment, though.

I don't think we want to allow binding of defaults to variables of
the outer lexical scope.  $_ is kind of special that way.

: > The current thinking as of Zurich is that the "given" passes in
: > separate from the ordinary parameters:
: > 
: >     sub ($a,$b,$c) is given($x) {...}
: > 
: 
: Ok, that seems saner.
: 
: > That binds the dynamically surrounding $_ to $x as an out-of-band
: > parameter.  Can also bind to $_ to make it the current topic.
: > 
: > Not sure of the syntax for pointy subs yet.  Maybe
: > 
: >     -> ($a,$b,$c) is given($x) {...}
: 
: I was with you up until this last example. Can you give a surrounding
: context so I can see how that would be used?

Exactly the same as the previous example.

Larry

Reply via email to