The ## syntax that some Smalltalks have (Smalltalk/X, for
example, which calls it a Dolphin extension) is related
to Common Lisp's
���� #.e���������� the result of evaluating e at *read* time,
���������������������� taken as a literal
���� #,e���������� the result of evaluating e at *load* time,
���������������������� taken as a literal.
This reminds us there are several times that a ## form
could be evaluated:
��- in the parser, when a method is parsed (before code
���� generation)
��- when code is generated
��- when code is generated AND whenever the image is
���� restored
��- when the value is first needed (I'd prefer this)
��- when the value is first needed in a thread (that
���� is, each thread that encounters it will evaluate
���� it just once, so each thread may see a different
���� value).

One continuing annoyance in Smalltalk is that I cannot
put a Fraction, a Date, a Time, or a DateAndTime in a
literal.�� It would be nice to have #1969-07-20 or #1/2
or #16:40:32 as literals and they contain no expressions
that could result in any confusion about when they are
evaluated and cannot be changed any more than a character
literal can.

Curly brace syntax {e1. ... en} is an expression form,
not a literal form.�� Similar forms for sets of several
kinds and dictionaries of several kinds are supported
in my Smalltalk, and they are indeed useful, but they
are especially useful because they are *not* literals
but create new values every time.


On 28 April 2018 at 16:13, lb <liangbing64@126.com> wrote:
Hi,
I think the question is��
How automaticly create literal's objects , not initialize.
e.g
'aString'
#aSymbol
{ anArray}
#[]
............

Cheers�� Liang