I’m wondering why some Unicode punctuation characters (Open Punctuation Ps, and Close Punctuation Pe) were excluded from variables names (identifiers) in this PR.
julia> ❘u❘ = abs(u) # allowed, e.g. denote an absolute value
julia> ⟦u⟧ = 1 # why not ? my use case is denoting a jump
ERROR: syntax: invalid character "⟦" near column 1
julia> ⦃u⦄ = 1 # why not ? my use case is denoting an average
ERROR: syntax: invalid character "⦃" near column 1
The slightly more detailed answer is that the parser needs to know whether a character is part of a name or if it is an operator. (e.g. you can’t name a variable a⊂). As such we only add Unicode characters on request.
That’s not my question. There are a lot of other Unicode characters that lead to ambiguities and still allowed (difficult to distinguish because of the current font, close to another: it’s the responsibility of the developer to use them sparingly), but I’m interested in knowing why these specific characters were excluded.
I want to use various fancy brackets as constructors for fancy container objects, so I wouldn’t want them to be in identifiers, just like [](){} aren’t in identifiers.