my original polemic email (Version 3)
Last updated at 2:39 pm UTC on 16 January 2006
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 &(Page 2083 - recycle me&(
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