The things is though, that it isn't array a which loses the weak flag. Addition of two arrays creates a _completely new_ array, which is then stored in the variable a. Since the weak flag is on the array and not the variable, a will refer to a weak array after the operation only if the newly created array is also weak.
So, should addition between a weak array and another (weak?) array also yield a weak array? We have three possible cases:
1) weak + non-weak 2) non-weak + weak 3) weak + weak
At least for case 1 and 3, getting a weak array back seems useful, but I'm not sure there are no pitfalls that could result from this...