Uri Guttman: # BD> Fine. In Perl 5 we have a restriction on when you can # and can't use # BD> parens on a subroutine--you can omit them when the sub # is predeclared, # BD> and Perl will assume that no magic is going on. I see # nothing wrong # BD> with this rule. # # but you are conflating plain subs and method calls. perl6 can # deal with predeclared subs and fixed argument signatures at # compile time like perl5 can. but the same is not true in # either 5 nor 6 with method calls as they can only be looked # up at run time. the arguments passed to a method can be
I'm speaking to the very specific case where the invocant is typed, so we know the (base) type at compile time. # checked then against know method signatures and maybe # multimethods could (dunno who or when that is decided. i # think the class has to be declared as having multimethods) be # invoked based on the arguments. # # so the need for parens on method calls is there if you have # any possible compile time ambiguity of how many arguments to pass in. But when you know the type beforehand, there shouldn't *be* any ambiguity. You can see the methods in that class, and you know how many arguments the biggest implementation of a multimethod[1] takes. Just assume that that's the one being called. Just to make things clear: class X { method x($a, $b) { } method x($a) { } } my $obj1 = X.new; my X $obj2 .= new; $obj1.x $a; # syntax error (missing parentheses on # untyped method call, or something like that) $obj2.x $a; # OK, like $obj2.x($a) $obj1.x $a, $b, $c; # syntax error $obj2.x $a, $b, $c; # OK, like $obj2.x($a, $b), $c I do *not* expect Perl to do the impossible or even the very difficult. This isn't even very difficult. [1] Is there a word for the chunk of code associated with a certain signature? --Brent Dax <[EMAIL PROTECTED]> @roles=map {"Parrot $_"} qw(embedding regexen Configure) "If you want to propagate an outrageously evil idea, your conclusion must be brazenly clear, but your proof unintelligible." --Ayn Rand, explaining how today's philosophies came to be