[Python-3000] Set literals - another try

Nick Coghlan ncoghlan at gmail.com
Wed Aug 9 12:17:25 CEST 2006

Collin Winter wrote:
> On 8/8/06, Josiah Carlson <jcarlson at uci.edu> wrote:
>> I personally don't see much of a use for set literals, considering that
>> there is a non-ambiguous spelling of it currently; set(...), whose only
>> cost above and beyond that of a set literal is a global name lookup.

> I thought one of the main arguments in favor of set literals is that a
> literal form would allow the compiler to perform optimisations that
> the set(...) spelling doesn't allow.

A different way to enable that would be to include a set of non-keyword names 
(a subset of the default builtin namespace) in the language definition that 
the compiler is explicitly permitted to treat as constants if they are not 
otherwise defined in the current lexical scope.

Then constant-folding could turn "len('abcde')" into 5, and "str(3+2)" into 
'5' and "set((1, 2, 3))" into the corresponding set object.

The only thing that would break is hacks like poking an alternate 
implementation of str or set or len into the global namespace from somewhere 
outside the module.


Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia

More information about the Python-3000 mailing list