I assume there can't be space between the backslash and the name, to prevent ambiguity like in the following:
# Is this `foo = not [1]` or `foo = \not[1]`? foo = (\ not[1]) A sampling of \ in other languages, for consideration: - Haskell: A lambda. E.g. `\x -> x+1` - TeX: A command. E.g. `\bold{Some text.}`. - Matlab: Matrix division operator. - PHP: Namespace delimiter. Uh. While LaTeX users have some intersection with Python users (Scipy!), I think there are enough differences in the languages that this one more won't hurt. On Tue, May 15, 2018 at 9:09 PM, Guido van Rossum <gu...@python.org> wrote: > I like it. I much prefer \ to $ since in most languages that use $ that I > know of (Perl, shell) there's a world of difference between $foo and foo > whenever they occur (basically they never mean the same thing), whereas at > least in shell, \foo means the same thing as foo *unless* foo would > otherwise have a special meaning. > > I also recall that in some Fortran dialect I once used, $ was treated as the > 27th letter of the alphabet, but not in the language standard. See e.g. > https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/Dollar-Signs.html. Apparently > it has a similar role in Java > (https://stackoverflow.com/questions/7484210/what-is-the-meaning-of-in-a-variable-name). > > On Tue, May 15, 2018 at 8:41 PM, Steven D'Aprano <st...@pearwood.info> > wrote: >> >> Inspired by Alex Brault's post: >> >> https://mail.python.org/pipermail/python-ideas/2018-May/050750.html >> >> I'd like to suggest we copy C#'s idea of verbatim identifiers, but using >> a backslash rather than @ sign: >> >> \name >> >> would allow "name" to be used as an identifier, even if it clashes with >> a keyword. >> >> It would *not* allow the use of characters that aren't valid in >> identifiers, e.g. this is out: \na!me # still not legal >> >> See usage #1 here: >> >> >> https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/verbatim >> >> >> If "verbatim name" is too long, we could call them "raw names", by >> analogy with raw strings. >> >> I believe that \ is currently illegal in any Python expression, except >> inside strings and at the very end of the line, so this ought to be >> syntactically unambgiguous. >> >> We should still include a (mild?) recommendation against using keywords >> unless necessary, and a (strong?) preference for the trailing underscore >> convention. But I think this doesn't look too bad: >> >> of = 'output.txt' >> \if = 'input.txt' >> with open(\if, 'r'): >> with open(of, 'w'): >> of.write(\if.read()) >> >> maybe even nicer than if_. >> >> Some examples: >> >> result = \except + 1 >> >> result = something.\except >> >> result = \except.\finally >> >> >> -- >> Steve >> _______________________________________________ >> Python-ideas mailing list >> Python-ideas@python.org >> https://mail.python.org/mailman/listinfo/python-ideas >> Code of Conduct: http://python.org/psf/codeofconduct/ > > > > > -- > --Guido van Rossum (python.org/~guido) > > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ > _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/