The compiler can figure out that the value of {1, 2, 3} is a set containing the elements 1, 2 and 3.
The problem with the value of frozenset({1, 2, 3}) is that the value of frozenset depends on the context. This is because frozenset = print is allowed. According to help(repr): repr(obj, /) Return the canonical string representation of the object. For many object types, including most builtins, eval(repr(obj)) == obj. Consistency suggests that if x = f{1, 2, 3} gives always gives frozenset as the value of x then repr(x) should be the string 'f{1, 2, 3}'. At present, I think, repr(x) always returns a literal if it can. However, changing the repr of frozenset introduces problems of backwards compatibility, particularly in doctests and documentation. Another way to achieve consistency is to make frozenset a keyword, in the same way that None, True and False are identifiers that are also language keywords. Both proposals as stated have negative side-effects. I suggest we explore ways of reducing the above and any other side effects. -- Jonathan
_______________________________________________ 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/L3TVX5Z52DGOPV4LUUB2GNIW7IVLK3IG/ Code of Conduct: http://python.org/psf/codeofconduct/