Front page | perl.perl6.language |
Postings from June 2005
Re: ./method <defunct>
June 18, 2005 16:55
Re: ./method <defunct>
Message ID: 20050618235454.GO7412@c4.convolution.nl
Darren Duncan skribis 2005-06-18 11:40 (-0700):
> item invocation syntax was exactly the same but with the
> consideration that all private items have a ':' as the first
> character in their otherwise alphanumeric names (the ':' looks like
> part of an operator but it isn't).
Except for attributes, which play a different game: the colon comes
*instead* of the dot as the twigil, while the accessor method gets : in
front of its name. If I recall correctly, the syntax is very misleading
in that it is NOT part of the name.
I don't like the inconsistency.
> PUBLIC PRIVATE
> ---------- ----------
> ./method() ./:method()
./:method is what I originally suggested along with my suggestion of
./method itself. I strongly dislike that .:method would work on $?SELF
and I also strongly dislike the contrived and false
two-\W-characters-mean-invocant-otherwise-it's-$_ rule. (It'd be true
(but would still feel artificial) if .+method would also use the
invocant. Which I pray is not the case.)
I do not want there to be any indication of there being two defaults and
that there is a way to select the other default. ./ is an operator by
itself and not the combination of . and /, and it cannot be used infix.
There is only ever one default variable|object in syntax, and that is
I'd like the colon to be part of the name, like underscore is used in
Perl 5: outside access is discouraged but entirely possible. I don't
think ANY syntax should be special cased for a method, just because it's
private. That doesn't mean there can't be a warning (warnings are not
syntax), and in fact a warning is all there should IMO be.
This means these public-private equivalency pairs exist:
$.bar $.:bar # I wouldn't mind if $:bar were an *abbreviation*
(People could introduce other prefixes (although the number of available
characters is very limited) for other accessability indicators, like
perhaps .@method to allow web access.
> .@method() .@:method()
In Perl, @ has a VERY strong association with arrays, so except for
specialised frameworks, I recommend against using it for other purposes.
> .>method() .>:method()
I think > has just enough purposes, and that it should be left alone
+>, ~> shift
->, <-> sub