Larry wrote:

: The invocant is bound to both.

Hmmm.  I'm not so sure.  I can argue it both ways.  Sure, it's nice
to be able to attach an absolute rule to "method", but I'm inclined
to think that unsigged methods work a little more like Perl 5 in
that case, and just put the invocant (or rather leave the invocant)
in @_[0].  This might simplify the translator.  But if were just
methods, I'd wouldn't make an exception.

But I'm wondering if there is another general rule that supercedes
method topicalization.  We could have a policy that all *sigless* sub
declarations just treat $_ as an external lexical variable, rather than
the A6 policy of implicitly declaring an undefined $_.  This would have
the beneficial effect (from the standpoint of p5-to-p6, anyway) that
most sigless subs default $_ to file-scoped $_, and a great deal of
the Perl 5 code that treats $_ as dynamically scoped would still work,
as long as the caller and callee were sharing the same file-scoped $_.
>
> A file-scoped $_ could be considered a sort of a half-way house to full
> signatured $_ semantics.  You couldn't clobber some other module's $_,
> but you still get a dynamically scoped $_ where naive users expect it.
>
> It's not a beautiful solution, but it might make the migration a lot
> smoother.  Something to be said for that...

Isn't that still going to break most translations? I mean, if a Perl 5
method (that's being translated to Perl 6) refers to $_, it surely means $CALLER::_, not $OUTER::_. So Perl 6 calls to it (typically from a different file scope) won't provide the expected $_ anyway.




I specifically avoided "type" or "kind" because I didn't want to imply
mere type matching when something more general might be happening,
such as smart matching, of which type matching is a small subset.

So maybe $which would be better???


Damian



Reply via email to