Hi Tim, I did the change and the rationale is that the most logical Collection recipient for Character is String, what else? OrderedCollection is totally arbitrary with this respect. OK, you cannot add: to a String. But can you add: to (1 to: 10)? No you can't. So, put together, the Rationale is simply a principle of least astonishment.
I just used this selector for own little experiments, then I used my commiter privilege (abused ?) to push the change to my benefit. I only act like this when I think that my own benefit matches general benefit. I have plenty of more questionnable changes that I don't push. I'm sorry that general benefit does not mean everyone's benefit, but in this case I would tend to favour Levente solution, fix Scratch and keep the String recipient.
Cheers
2013/7/18 tim Rowledge tim@rowledge.org
On 17-07-2013, at 7:18 PM, Levente Uzonyi leves@elte.hu wrote:
On Wed, 17 Jul 2013, tim Rowledge wrote:
Not long ago Character>to: was changed to return a String instead of an
Array. That broke ObjectsTool>alphabeticTabs
Either we need to fix alphabeticTabs to re-convert the String to a
collection, or rescind the change to Character>to:. It would help if the rationale for that change were known.
The fix is easy, just replace the line causing the bug with this:
tabLabels := ($a to: $z) collect: [:ch | ch asString] as:
OrderedCollection.
I can't commit now, so please do it.
I had already sent a fix like that to Frank - since he's tearing up the system right now and I'm a bit occupied with Scratch modernisation - but I'm not convinced it is better than making $a to: $z go back to returning an Array. I *know* a String is kinda-sorta an array of characters - but I want to be assured that the change didn't bugger up any other methods as a side-effect. Why was it done? What efforts to ensure it didn't screw things were made?
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Strange OpCodes: YOGA: Exit Finite-State Mode