unicode as valid naming symbols

Ian Kelly ian.g.kelly at gmail.com
Thu Mar 27 17:22:40 CET 2014

On Thu, Mar 27, 2014 at 9:28 AM, Mark H Harris <harrismh777 at gmail.com> wrote:
>> Do you think that the ability to write this would be an improvement?
>> import ⌺
>> ⌚ = ⌺.╩░
>> ⑥ = 5*⌺.⋨⋩
>> ❹ = ⑥ - 1
>> ♅⚕⚛ = [⌺.✱✳**⌺.❇*❹{⠪|⌚.∣} for ⠪ in ⌺.⣚]
>> ⌺.˘˜¨´՛՜(♅⚕⚛)
>    Steven, you're killing me here; argument by analogy does not work!

That's not an analogy.  That's an example of valid Python code if
arbitrary Unicode characters could be used to name identifiers.

>   No, any unicode character (except numerals) should be able to begin a name
> identifier.   alt-l  λ   and  alt-v  √   should be valid first character
> name identifier symbols.

What's a numeral?  The circled numbers in the example above are
categorized as No ("Number, Other").  Currently Python only allows the
ASCII digits in numeric literals, but who's to say that ٤٢ --
categorized as Nd ("Number, Decimal Digit") shouldn't be a valid way
to write 42?  ㊷ seems a bit excessive for a literal, though, so should
that be permitted to start an identifier?

>> There are languages that can allow arbitrary symbols as identifiers, like
>> Lisp and Forth. You will note that they have a certain reputation for
>> being, um, different, and although both went through periods of
>> considerable popularity, both have faded in popularity since.
>    Actually, there is a recent resurgence of popularity in both common lisp
> and scheme these days.  But, again, that has nothing to do with my argument.
> No modern language should limit the use of certain symbols to say, only math
> √ .    The radical symbol is more often than not going to be useful only
> with math (which , by the way is why it should be built-in as  √ =
> squre-rooot) but why limit its use elsewhere.
>    Whether this can work in python is also beside the point, because I'm not
> demanding anything here either, at this point.

One of the things that Python is widely known for is its readability.
Allowing symbols such as √ to denote identifiers may be quite
expressive and appreciable to the person writing the code. However it
damages readability considerably, as seen in Steven's example above.
Personally I'm not interested in having to maintain another
programmer's code that arbitrarily uses ⌚ as a timer function, ╩ as
intersection or ░ as a matrix constructor.

More information about the Python-list mailing list