On Thu, Apr 06, 2006 at 01:58:55PM -0400, Matt Fowles wrote:
: All~
: 
: I just noticed something claiming that C<$a. foo()> is actually
: C<$a.foo()> (a method call on C<$a>) and that C<$a .foo()> is actually
: C<$a $_.foo()> (likely a syntax error).
: 
: When did this change?  Why did this change?

It changed at the last hackathon, but is still being debated, mostly
on #perl6.  The current S02 "early dot" rule is likely being abandoned,
but we don't know for what yet.  The reason is that term/operator
lexer state is interacting badly with inconsistent retroactive
whitespace cancellation.

: Also, I liked it better when C<$a .foo()> was a method call on C<$a>.

Sure, that one might be obvious, but quick, tell me what these mean:

    say .bar
    say .()
    say .1
    when .bar
    when .()
    when .1
    foo .bar
    foo .()
    foo .1
    .foo .bar
    .foo .()
    .foo .1

I'd rather have a rule you don't have to think about so hard.  To me
that implies something simple that let's you put whitespace *into*
a postfix without violating the "postfixes don't take preceding
whitespace" rule.

Larry

Reply via email to