Damian Conway skribis 2005-05-16 10:33 (+1000):
> 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
> So the rule is:
>     One-character operator --> call on $_
>     Two-character operator --> call on $?SELF"

I was very specific about ./ being prefix only. Aligning it with .: is
ugly, because .: can be used infix.

    $object.method
    $object.:method

    given $object {
        .method
        .:method  # !!
    }

Either it should do the expected thing, default to $_, or one of .:'s
syntaxes must be made invalid. Don't try to convince me that prefix .:
is an entirely different operator, because it is spelled the same and
does the same thing (call a private method). The only thing that's
different is that its invocant is left out of the code, and when we then
use something that isn't there, we call that a default. And defaults are
always $_, never $?SELF. But that you know.

Anything that begins with a dot looks way too much like the lone dot to
subtly mean something else. 

Either infix .: must go away, or prefix .: must operate on $_.

I think infix .: can go, because calling private methods should be
harder anyway. Make that $object.!!(:)method for all I care.

And I think "method :name" must be very differently spelled, because it
looks like : is part of the name, which makes me want consistency:

    $o.private   $.private   .private   ./private
    $o.:private  $.:private  .:private  ./:private

Even forcing whitespace between : and name would already solve this:
"method : name". It's ugly though. 

To be honest, the current fog around private methods, and my not liking
much of the way they work, is pushing me towards good old _private
instead, ignoring the whole wildly special cased colon method thingies.


Juerd
-- 
http://convolution.nl/maak_juerd_blij.html
http://convolution.nl/make_juerd_happy.html 
http://convolution.nl/gajigu_juerd_n.html

Reply via email to