Structures such as lists, tuples, dictionaries, etc., have literal constructors,
assert [] == list()
assert () == tuple()
assert {} == dict()
but frozensets do not.
To distinguish this from a dictionary, and to expand on the following idea:
In a function, when declaring parameters between parentheses, you must specify the positional elements before the symbol /, which is the inverse of the asterisk (*) operator; a symbolic nod to math.
Why not generalize the concept within the curly braces, adding a / symbol that, when placed after the opening curly brace, means, “I’ve positioned all my elements up to this point”?
assert {1, 2, /} == frozenset({1, 2})
assert {/} == frozenset()
This offers yet another nod to math, as {/} is a combination of the two symbols representing the empty set: {} and ∅.
PS:
The idea originally came from wanting to create an empty set (not frozen) concisely, but in the end, quite a few ways of writing it (including simply calling the constructor with no arguments) work just fine, such as these:
set()
{*''}
{*{}}
...
I admit that all of this is just syntactic sugar, but Python is practically "evaluable pseudocode" that’s generally neither verbose nor “diabetic.” :*)