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