On Wed, Oct 01, 2014 at 09:00:08PM -0700, Carl Mäsak wrote:
> <masak> m: say <jet plane> (^) <network lag> (^) <plane network>
> 
> It's an interesting question in itself where the error message "Too
> many positionals passed; expected 2 arguments but got 3" comes from.
> Does the (^) operator somehow declare itself as chaining, but then has
> no capability to handle a longer chain of operands? Just guessing
> here.

I noticed this a few weeks ago when playing with the set operators.  The 
problem is that infix:<(^)> is correctly declared as having list associativity 
(it's at "junctive_or" precedence), but is defined as a binary operator in 
src/core/set_operators.pm.  This is the reason for the "expected 2 arguments 
but got 3" message.

For comparison, note that infix:<(|)> is defined in src/core/set_operators.pm as

    sub infix:<(|)>(**@p)

infix:<(^)> needs to have a similar declaration instead of the 2-argument form 
that is there now.

Pm

Reply via email to