First, let's forget about OrderedCollection, that's just Levente's post that misguided me.
The old behaviour was to return an Array, so you couldn't add: either.
In your example, you explicitely asked for an Array, then you select: an Array, that seems fair.
I see no reason why we would change that to a String.
That's different from ($a to: $z) case where we did not explicitely requested an Array.
Some code does indeed implicitely expect an Array, and I broke it, because
- as you said, it's hard to analyze source (many senders)
- and as we all know, we lack a few tests here and there (well, it's a joke, we lack more than we have, but that's a debt from the past that we slowly refund)
But let's return to these expectations.
An Array of Character has not much value per se. I mean that's exactly what a String is, an Array of Character...
Except that the String is much much reacher with a bunch of specialized methods (because we know it contains Character).
So to me, the most logical thing to do remains to answer a String.
The only difference with String is when you collect: something else than Character, and that's what you bumped into.