Hi daniel
I send it into the mailing list too becuase this is important
From a language design perspective
#() is necessary because it is compiled statically and cannot not be simulated by other construct. Storing #() in Stack frame is not really goo but this is an implementation aspect.
#{} is not necessary because this is shortcut macro-expansion for Array new add: ....
So why having only this one. There is two ways: or you have a way to describe macro-expansion like in Scheme where you can define any macro in a clear way (you know the semantic of the stuff
or we remove it because why not having {{}} for Set new add: {#[]} for OrderedCollection new....Because I use more OrderedCollection than array
Removing would simply the parser, compiler, Object simpler the printer printer the VM, the bytes code emitter, then Squeak would be a bit more standard but this is not the most important point. Why can I send the message caseOf: to ___any Object___ berk!!!!
I'm pretty sure that I can destroy the semantics prevservation of certain refactoring (I did it for ObjectStudio RB because OS has this &(*&*&( construct too). The parser of Rb in Squeak has to e more complex than the one of VW because of the expressions inside {}....
And it would avoid to have people writing, (I saw that in indsutrial code people wrote __huge__
{ {,.n,mnm, } {knlkj lk jjkl with block everywhere} {,.n,mnm, } {knlkj lk jjkl with block everywhere} {,.n,mnm, } {knlkj lk jjkl with block everywhere} {,.n,mnm, } {knlkj lk jjkl with block everywhere} {,.n,mnm, } {knlkj lk jjkl with block everywhere} }
So I hope that I convince you. I will try to came up with a change ste that REMOVE this anthrax from Squeak!!!
Stef