On Sun, May 15, 2005 at 08:54:52PM -0400, Matt Diephouse wrote:
: Damian Conway <[EMAIL PROTECTED]> wrote:
: > Larry Wall wrote:
: > 
: > > On Sun, May 15, 2005 at 12:22:07PM -0400, Matt Diephouse wrote:
: > > : Does this mean private methods will be called like this?
: > > :
: > > :   ./:method()
: > >
: > > No, I think that's still just
: > >
: > >     .:method()
: > 
: > This missing design rationale here is that the colon acts as part of the 
unary
: > operator:
: > 
: >      ./    unary public-method-call-on-invocant
: > 
: >      .:    unary private-method-call-on-invocant
: 
: This introduces some asymmetry with accessors, which are currently
: $.attr and $:attr. I think in this case it's more consistent to use
: the $/attr for public attributes. Unfortunately, I find that rather
: ugly, which is why I gave up trying to find a secondary sigil for
: public methods called on the invocant in the first place.
: 
: In other words, I don't see any solution here that is less than ideal.

I think almost all internal access to one's own attributes will be
via $.foo and $:bar.  Outside the class there is already a complete
asymmetry between public and private methods, so there's no reason to
invent a perfect encoding for the few cases where it matters.  $.foo is
good enough to indicate that there are probably external methods,
and $:bar is good enough to indicate that there probably aren't.

Larry

Reply via email to