On Sat, Apr 02, 2005 at 01:49:24AM -0800, Brent 'Dax' Royal-Gordon wrote:
: I've included assignment forms of all operators in the exponentiation,
: multiplicative, additive, junctive, and tight logical levels; this may
: be overkill or underkill. I've not included hyper forms of these
: operators, as I figure they're handled by metaoperators.

I would say that assignment operators are also metaoperators.  They're
just a bit picky about which precedence levels they metastasize.
In other words, if someone adds an appropriate binary operator, it
would automatically get the assignment meta-operator.  But not if
it's a chaining binary, non-chaining binary, or assignment operator.
(We could define the levels that it *does* work on, but then it doesn't
work on user-defined precedence levels by default.  Alternatively,
we could develop a profile apart from precedence levels for operators
that are omitted, such as ones that return boolean values, or that create
new objects, or that mutate their left argument already.)

: In any case, let me know if anything's missing--or for that matter if
: anything's there that shouldn't be.

Seems to be missing:

    infix:<?&>
    infix:<?|>.
    infix:<?^>.

The shifts are all X< rather than X<< to avoid confusion with Texas Quotes.

Oh, and we recently moved => to assignment precedence so it would
more naturally be right associative, and to keep the non-chaining
binaries consistently non-associative.  Also lets you say:

    key => $x ?? $y :: $z;

plus it moves it closer to the comma that it used to be in Perl 5.

Larry

Reply via email to