
On 2022-01-16 00:27, Steven D'Aprano wrote:
It seems to me that all of the machinery to make this work already exists. The compiler already knows how to create frozensets at compile-time, avoiding the need to lookup and call the frozenset() builtin. All we need is syntax for a frozenset display.
How does this work for you?
f{1, 2, 3}
I don't like that syntax. In the first place, as others have noted, it treads too close to existing function-call and indexing syntax. In those syntaxes, `f` is a name, whereas here it is not a name but just a syntactic marker (as in f-strings). In the second place, I don't like the idea of using prefixes to change the types of objects like this. As far as I know we only have one example of that, namely byte strings. The other string prefixes do not create different types, they just affect how the literal is eventually parsed into a string. I would prefer some sort of augmented bracket notation, like {:1, 2, 3:} or something along those lines. I do think it would be nice to have a frozenset literal, because I'm a purity-beats-practicality person and it bugs me that there isn't one. However, from that perspective I'd much rather have a frozen-dict type and then a syntax for it. :-) -- Brendan Barnwell "Do not follow where the path may lead. Go, instead, where there is no path, and leave a trail." --author unknown