Even if you make the compiler change, I hope you will still consider leaving the two #empty methods in place for expressiveness. They, too, would answer the single canonicalized global stored in the compiler. However, the use of #empty makes the canonicalization explicit rather than implicit, and affords appreciation of a Pharo system that describes itself, e.g., associating the word "empty" with the notation that a new Pharo user might find cryptic.
On Sat, Feb 13, 2010 at 1:06 PM, Marcus Denker <marcus.den...@inria.fr> wrote: > > On Feb 13, 2010, at 8:03 PM, Stéphane Ducasse wrote: > >> the only think is that the #() and '' will not be created all the time but >> in the compile method literal frame. >> > Yes, right now it's created once per method... the compiler could easily make > sure that it's shared globally. > > Marcus > > >> Stef >> >> >>> would the idea to be to rewrite every #() with Array empty? >>> >>> If that was the case could you get the compiler to do that as an >>> optimization? I quite like the fact that #() is the empty array. it's >>> nice and compact; quite aesthetic. >>> >>> cheers, >>> Mike >>> >>> On Sat, Feb 13, 2010 at 11:06 AM, Stéphane Ducasse >>> <stephane.duca...@inria.fr> wrote: >>>> Hi guys >>>> >>>> chris mueller proposed in squeak to have >>>> >>>> >>>> Exception>>messageText >>>> "Return an exception's message text." >>>> + ^ messageText ifNil: [ String empty ]! >>>> - >>>> - ^messageText! >>>> >>>> - Added Array class>>#empty and String class>>#empty to provide >>>> applications with >>>> canonicalized instances of these oft-used objects; since they are embedded >>>> as literals in the >>>> CompiledMethod. >>>> >>>> =============== Diff against Collections-ar.304 =============== >>>> >>>> Item was added: >>>> + ----- Method: Array class>>empty (in category 'instance creation') ----- >>>> + empty >>>> + "A canonicalized empty Array instance." >>>> + ^ #()! >>>> >>>> Item was added: >>>> + ----- Method: String class>>empty (in category 'instance creation') ----- >>>> + empty >>>> + "A canonicalized empty String instance." >>>> + ^ ''! >>>> >>>> Item was removed: >>>> - ----- Method: String>>asDefaultDecodedString (in category 'converting') >>>> ----- >>>> - asDefaultDecodedString >>>> - >>>> - ^ self >>>> >>>> >>>> http://code.google.com/p/pharo/issues/detail?id=1961 >>>> _______________________________________________ >>>> Pharo-project mailing list >>>> Pharo-project@lists.gforge.inria.fr >>>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project >>>> >>> >>> _______________________________________________ >>> Pharo-project mailing list >>> Pharo-project@lists.gforge.inria.fr >>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project >> >> >> _______________________________________________ >> Pharo-project mailing list >> Pharo-project@lists.gforge.inria.fr >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > > -- > Marcus Denker -- http://www.marcusdenker.de > INRIA Lille -- Nord Europe. Team RMoD. > > > _______________________________________________ > Pharo-project mailing list > Pharo-project@lists.gforge.inria.fr > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project