What would entail actually extending the syntax and adding the set literal?
>From my brief observations (when I was discussing this with OP on discord): * adding a new AST node * extend RBParser * extend IRMethod/IRTranslator... maybe generating bytecode for `{ ... } asSet` instead would be enough? (not sure how debugger would react to this) anything else? Would VM changes be required? Peter On Sat, Apr 28, 2018 at 8:33 AM, Richard O'Keefe <rao...@gmail.com> wrote: > 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 <liangbin...@126.com> wrote: > >> Hi, >> I think the question is >> How automaticly create literal's objects , not initialize. >> e.g >> 'aString' >> #aSymbol >> { anArray} >> #[] >> ............ >> >> Cheers Liang >> >> >