>> So again, I don't see the difference between the two. ^[+]= and ^+= are 
>> synonyms as far as I can see, and hence no need for the first form.

> Only in the absence of overloading, and only because we've naively defined 
> array ops to always do "union" rather than "intersection".  If there were a 
> vector op that took the shorter of two arrays as the overall length, then
> 
>     @a = @a »op« @b
> 
> will truncate @a, while
> 
>     @a »op=« @b
> 
> might only change the elements they have in common.  I don't know if we'll 
> have any such operators on arrays, but they've already been proposed for 
> hashes.

argh. you're scaring me just mentioning '»' and '«' as vector ops (ascii
please!).  Also, just mentioning array versus intersection scares me. You 
could make a case that:

@a ^+= @b;

does a truncate on @a if @b is shorter, and that 

@a v+= @b;

is the 'true' union operator. You could hence argue that there are really two
vector operators one for union and one for intersection, and that the place
to define whether or not something as intersection or union belongs there, and
not in the operator itself.

Ed

Reply via email to