Do you know what else would work for being able to enter empty sets? A prefix to {} , like "s" a = s{}
and b = f{} for an empty frozenset (/me ducks, and hides in a place Chris won't find me) On Mon, Mar 14, 2022 at 10:29 AM Chris Angelico <ros...@gmail.com> wrote: > On Tue, 15 Mar 2022 at 00:07, Joao S. O. Bueno <jsbu...@python.org.br> > wrote: > > > > > > > > On Mon, Mar 14, 2022 at 9:49 AM Chris Angelico <ros...@gmail.com> wrote: > >> > >> On Mon, 14 Mar 2022 at 23:35, <joao.p.f.batista...@gmail.com> wrote: > >> > > >> > Currently: > >> > l = [] # new empty list > >> > t = () # new empty tuple > >> > s = set() # new empty set (no clean and consistent way of > initializing regarding the others) <<< > >> > d = {} # new empty dictionary > >> > > >> > Possible solution: > >> > s = {} # new empty set > >> > d = {:} # new empty dictionary (the ":" is a reference to key-value > pairs) > >> > >> Nope, that would break tons of existing code. Not gonna happen. > > > > Of couse not. (And I mean it). > > - but what about keeping what exists and adding {,} for an empty set? > > (it is not that unlike the one-element tuple, which already exists) > > That's more plausible. However, the one-element tuple is actually > written like this: > > t = x, > > The parentheses are a common form of clarity (and included in the > repr), but aren't actually the part of the syntax that makes it a > tuple - the comma is. So there's no real parallel, and it's basically > "what can we write that wouldn't be ambiguous?", which is a weak > justification. > > Unfortunately, Python simply doesn't have enough symbols available. > Using precisely one opener/closer for each type is highly limiting, > since the only characters available are those on a US-English keyboard > and in the ASCII set. It would be nice if, for instance, ∅ could mean > "new empty set", but then we'd need a way to type it, and it'd end up > coming right back around to "just type set(), it's easier". > > I wonder what it would be like to have a fork of Python that > introduces some non-ASCII non-US-English syntax, purely to give people > a chance to play around with it. Someone might actually set up an > editor feature so that "set()" transforms into "∅", not just visually > but in the file, and since it's restricted to an input feature in the > editor, it avoids the usual problems of "what if you shadow the name > set". Who knows? Maybe it would catch on, maybe it wouldn't. > > It's not all that difficult to hack on Python and add this feature. I > did it a while back, but since I didn't use sets enough to bother > figuring out an input method, didn't end up using it. If you want to > write it as a pure source-code transformation, {*()} is a syntax-only > way to generate an empty set, so it'll guarantee that you don't run > into name shadowing issues; but it would be better to make it actual > syntax (and thus avoid unpacking a tuple into your set for no reason), > and also change the repr accordingly. > > ChrisA > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/NYNTWQKJM4NOC72UPHVTUOUFCECYMZNW/ > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/3465RMUBJBH453BNS4L2F7JCFYYWKBNA/ Code of Conduct: http://python.org/psf/codeofconduct/