=head1 TITLE Method calls should not suffer from the action on a distance =head1 VERSION Maintainer: Ilya Zakharevich Date: 15 Sep 2000 Mailing List: perl6-language@perl.org Number: 244 Version: 1 Status: Developing =head1 ABSTRACT This RFC proposes to remove indirect object syntax, and modify the semantic of the C<< -> >> operator. =head1 DESCRIPTION =head2 -> Currently, foo->bar($baz) can be parsed either as C<<'foo'->bar($baz)>>, or as C<bar($baz)>> depending on how the symbol C was used on other places. The proposal is to always choose the first meaning: make C<< -> >> autoquote the bareword on the left. This interpretation is more desirable on esthetical ground, since 'foo'->bar($baz) looks visually clattered, but C<bar($baz)>> looks as if it expresses its meaning. The default choice is done so that if you need other choice, your code does not look artificial. =head2 Parentheses foo->bar($baz, $coon) should be made synonymous with foo->bar $baz, $coon I can see no ambiguity in this call, but it not always works with Perl5. =head2 Indirect object syntax Currently, bar foo $baz can be parsed either as C<<'foo'->bar($baz)>>, or as C<&bar(&foo($baz))>, depending on how the symbols C and C were used on other places. There only way to avoid the action at a distance is to prohibit one of these interpretations. Since the other way C<bar $baz>> to write this method call is as convenient as the indirect object syntax, the proposal is to prohibit the indirect object method calls altogether. Make the above syntax be interpreted as C<&bar(&foo($baz))>. =head1 MIGRATION ISSUES Translate Perl5 code as specified above. =head1 IMPLEMENTATION Remove the DWIM logic from the parser. =head1 REFERENCES None.