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?

> : # 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.


> 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?

-- 
Aaron Sherman <[EMAIL PROTECTED]>

Reply via email to