> >>     $_       # current topic
> >>     $__      # outer topic
> >>     $___     # outer outer topic
> 
> [not sufficiently visibly distinct]
> [too much anyway]

Agreed.

Returning to the topic of binding/copying
from a caller to a callee, what about using
square brackets to mark implicit args thus:

    sub bar ($a, $b)
            [$_, $foo]
    { ... }

In the above, implicit args go inside the
square brackets and the topic and $foo of
the sub being def'd are the same as (aliased
to) the topic and $foo of the calling sub.

As I said before, if you call a sub you
really ought to know that sub's signature,
and the above would make it clear that $_
and $foo are shared between caller and callee.

Of course, you might then come back and
change your calling code, accidentally
clobbering a shared lexical. So, back at
the caller end of things, I suggest the
following (simplified from an earlier post):

 o There's a property that controls whether
   called subs can share a given lexical of
   a callee. I'll call this property Yours.

 o By default, topics are set to Yours(rw);
   other lexicals are set to not Yours.

--
ralph

Reply via email to