Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!xlned.com!feeder5.xlned.com!newsfeed.xs4all.nl!newsfeed2a.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.002 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'python.': 0.02; 'causing': 0.04; 'subsequent': 0.05; 'deny': 0.07; 'permitted': 0.07; 'derived': 0.09; 'parsing': 0.09; 'url:unicode': 0.09; 'cc:addr :python-list': 0.11; 'python': 0.11; 'mostly': 0.14; "wouldn't": 0.14; '(it': 0.16; '10:59': 0.16; 'as-is': 0.16; 'be:': 0.16; 'belongs': 0.16; 'categories,': 0.16; 'caveat': 0.16; 'entirely.': 0.16; 'from:addr:rosuav': 0.16; 'from:name:chris angelico': 0.16; 'identifiers;': 0.16; 'line)': 0.16; 'operators,': 0.16; 'operators.': 0.16; 'reasonable.': 0.16; 'simplest': 0.16; 'subject:unicode': 0.16; 'symbols': 0.16; 'wrote:': 0.18; 'obviously': 0.18; "python's": 0.19; 'cc:addr:python.org': 0.22; 'mathematical': 0.24; 'unicode': 0.24; 'fine': 0.24; 'cc:2**0': 0.24; 'header:In-Reply-To:1': 0.27; 'chris': 0.29; 'character': 0.29; 'thus': 0.29; "doesn't": 0.30; 'characters': 0.30; 'message- id:@mail.gmail.com': 0.30; 'that.': 0.31; '(maybe': 0.31; 'boundary': 0.31; 'indentation': 0.31; 'operators': 0.31; 'symbolic': 0.31; 'url:category': 0.31; 'this.': 0.32; 'probably': 0.32; 'figure': 0.32; 'sense': 0.34; 'maybe': 0.34; 'classes': 0.35; 'something': 0.35; 'definition': 0.35; 'one,': 0.35; 'but': 0.35; 'received:google.com': 0.35; 'there': 0.35; 'possible': 0.36; 'should': 0.36; 'pm,': 0.38; 'either': 0.39; 'space': 0.40; 'ensure': 0.60; 'letters': 0.60; 'problems.': 0.60; 'new': 0.61; 'entire': 0.61; 'first': 0.61; 'name': 0.63; 'personal': 0.63; 'skip:n 10': 0.64; 'choose': 0.64; 'become': 0.64; 'within': 0.65; 'legal': 0.71; 'url:htm': 0.73; 'url:info': 0.73; 'future,': 0.83; 'low': 0.83; 'collision': 0.84; 'pardon': 0.84; 'ruled': 0.84; 'pc,': 0.91; 'to:none': 0.92 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:cc :content-type; bh=a40v9YhYG2ba38rs/oz/lw5q8vYF67UDY1x9qPe9e3w=; b=jDY6uQ8kQ/XiuvAF88A0Sre/nyY9jigwjS2XPUeYUIlPEXFg1fUjjzP4B2n4Cxljbm /HqA5CoR3iDtd+p4geEGHc04fx9Pfu76ZMIc9zQuCz1C39BEwdM84URrsNSdawGLE+Cx ptSVhetZBgFWPmzz/i8RUftsTUftXmRvAjdfKSjVClbQBP7X2+xXmhwF9hFWqdSyRLcP +oR5aEUmgNS4DLRRpwbbBx/oIuohIY2BS6YMN9CuF1iZj4n9jSziJA6dlTzpGVi37Dty sDi4Jh14a0ezlh1/QT52xPf86y/9JsHnVn1LduNOL/z/urxtWpQkJhsPVhe1EozJT+ZN 8HnA== MIME-Version: 1.0 X-Received: by 10.68.248.7 with SMTP id yi7mr31313818pbc.31.1396357257239; Tue, 01 Apr 2014 06:00:57 -0700 (PDT) In-Reply-To: <533AAA13.4010309@rece.vub.ac.be> References: <5331D902.3030902@gmail.com> <53321819$0$29994$c3e8da3$5496439d@news.astraweb.com> <53393BA4.2080305@rece.vub.ac.be> <5339C281.7080300@rece.vub.ac.be> <533A768F.5080102@rece.vub.ac.be> <533A96E9.1030107@rece.vub.ac.be> <533AAA13.4010309@rece.vub.ac.be> Date: Wed, 2 Apr 2014 00:00:56 +1100 Subject: Re: unicode as valid naming symbols From: Chris Angelico Cc: "python-list@python.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 41 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1396357260 news.xs4all.nl 2958 [2001:888:2000:d::a6]:33616 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:69509 On Tue, Apr 1, 2014 at 10:59 PM, Antoon Pardon wrote: > On 01-04-14 12:58, Chris Angelico wrote: >> But because, in the future, Python may choose to create new operators, >> the simplest and safest way to ensure safety is to put a boundary on >> what can be operators and what can be names; Unicode character classes >> are perfect for this. It's also possible that all Unicode whitespace >> characters might become legal for indentation and separation (maybe >> they are already??), so obviously they're ruled out as identifiers; >> anyway, I honestly do not think people would want to use U+2007 FIGURE >> SPACE inside a name. So if we deny whitespace, and accept letters and >> digits, it makes good sense to deny mathematical symbols so as to keep >> them available for operators. (It also makes reasonable sense to >> *permit* mathematical symbols, thus allowing you to use them for >> functions/methods, in the same way that you can use "n", "o", and "t", >> but not "not"; but with word operators, the entire word has to be used >> as-is before it's a collision - with a symbolic one, any instance of >> that symbol inside a name will change parsing entirely. It's a >> trade-off, and Python's made a decision one way and not the other.) > > This mostly makes sense to me. The only caveat I have is that since we > also allow _ (U+005F LOW LINE) in names which belongs to the category > , we should allow other symbols within this > category in a name. > > But I confess that is mostly personal taste, since I find names_like_this > ugly. Names-like-this look better to me but that wouldn't be workable > in python. But maybe there is some connector that would be aestetically > pleasing and not causing other problems. That's reasonable. The Pc category doesn't have much in it: http://www.fileformat.info/info/unicode/category/Pc/list.htm If the definition of "characters permitted in identifiers" is derived exclusively from the Unicode categories, including Pc would make fine sense. Probably the definition should be: First character is L* or Pc, subsequent characters are L*, N*, or Pc, and either Mn or M* (combining characters). Or something like that. ChrisA