> Set in stone, huh? Hmm. It may affect the parsing, but I'm not sure.
> Perhaps we can Arbitrarily Declare that an underscore isn't allowed as
> the last character of a symbol. That way, you can still do $foo_$bar
> without worrying about whitespace.
I doubt it. From E3:
Underscore is still a valid identifier character, so you need to be
careful about spacing it from a preceding or following identifier
(just as you've always have with the C<x> or C<eq> operators):
# Perl 6 code # Meaning
$name = getTitle _ getName; # getTitle() . getName()
$name = getTitle_ getName; # getTitle_(getName())
$name = getTitle _getName; # getTitle(_getName())
$name = getTitle_getName; # getTitle_getName()
> BTW, did you guys look at the possibility of overloading hyper? $foo ^
> $bar ought not to occur anywhere; nor should @foo ^^ @bar. And I didn't
> see anything about you being able to hyper =, so ^= ought to be alright
> too.
Syntactically these would be fine, but I think the idea is: one symbol, one
operation (or family of operations). That's why Perl 5's C<^> becomes C<~> in
Perl 6. We *could* have left it as is, but this way, whenever you see a caret,
you know you're seeing a vector operation.
> Of course. OTOH, people will scratch their heads when they come upon
> $foo � $bar or whatever.
Sure. Isn't that the point? >;-)
> On a separate note, how will '$foo??Bar::baz::frob' parse?
As a call to Bar::baz::frob if $foo is true, followed by
"Missing :: in ternary operation".
>From E3:
The doubling also helps it stand out better in code, in part
because it forces you to put space around the C<::> so that it's
not confused with a package name separator.
> Since I've been complaining a lot, I'll now say a bunch of the things I
> do like:
Yes, there *are* a great many things to like in Larry's design.
I'm glad you think so too.
Damian