[Python-3000] sets in P3K?

Paul Moore p.f.moore at gmail.com
Sat Apr 29 12:16:57 CEST 2006


On 4/29/06, Nick Coghlan <ncoghlan at gmail.com> wrote:
> However, I'm now -0 on having a set literal at all, and it's because I believe
> we can solve this problem in a more general fashion that applies to more
> functions than just the set() constructor.
>
> Currently, [] and () can appear both standalone or following an expression
> (list literals and comprehensions, and subscripting for [], tuple literals and
> precedence manipulation, and function calls for ())
>
> {} however, can appear only standalone. It is not permitted for it to follow
> an expression. If we change that, we can use it to support an alternate
> invocation syntax for functions that currently expect an iterable as their
> first argument. "EXPR{ARGS}" would be equivalent to "EXPR((ARGS,))", with the
> following differences in the parsing of ARGS:
>     x:y would be permitted, and map to a 2-tuple (x, y)
>     x:y:z would be permitted, and map to a 3-tuple (x, y, z)
>     x=y would be permitted, and map to a 2-tuple ('x', y)
>     *x would be permitted, and would extend the passed in tuple with x

+1. This looks like a really nice option.

One downside, which I only point out because someone will, is that
optimization opportunities will be lost for the usual reason - the
optimizer can't be sure that set (or whatever) hasn't been reassigned.
But I still see that as something to be addressed independently, if at
all.

Paul.


More information about the Python-3000 mailing list