S03 is currently inconsistent. It first says these are not supported:
The final metaoperator in Perl 6 is the reduction operator. Any
infix operator (except for non-associating operators and assignment
operators) can be surrounded by square brackets in term position to
But then implies it is on the defaulting table below:
[=]() # undef (same for all assignment operators)
I don't see an obvious problem in supporting them as a syntactic
expansion.
But would it be useful? And is there some hidden corners that I missed?
Thanks,
Audrey
Except that the left side of an = determines the scalar/list parsing
of the right side, while reduce operators are all list ops, at least
syntactically. So should this:
[=] $x, @y, 0
mean this:
$x = @y = 0;
or should it mean this:
$x = @y[0] = @y[1] = @y[2] ... = 0;
: But would it be useful? And is there some hidden corners that I missed?
Seems like
[=] @x, 0
is vaguely useful if we take the latter interpretation. (And I do
think that's the correct interpretation.) But maybe that's better
written as
@x »=« 0
in any case. On the other hand, I'm not sure how else you'd write
[+=] @x, 0
Maybe
@x = reverse [\+] reverse @x;
So I guess we can allow [=] and friends, provided it's understood that
no LHS dwimmery is done.
Larry