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