<div dir="ltr">I think it is plainly evident that the well-defined criteria you would like to use *have not yet been defined* by Unicode. That is a large part of why I recommend that we postpone a major overhaul of our operator characters.<div><br></div><div>Furthermore, just like during the Great Renaming—when we used some general rules to automate the name changes, then went through and fine-tuned by hand to deal with cases where the automated rules produced suboptimal results—I think it will be great if we can classify the majority of characters all at once with certain criteria, but we should expect and plan to go through by hand afterward to clean up the edge cases that humans can tell were misplaced by the broad rules.</div><div><br></div><div>It is more important that we get the definitions of operator and identifier characters *right* than that we make them *rigidly conform to a certain rule*. If our rule says “∞” should be an operator, but we as humans recognize that to be a mistake, then we should change it. Heck, maybe we should make “∞” parse as a floating-point literal!</div><div><br></div><div>The point is, bikeshedding over operators has been and continues to be diverting our collective attention away from the rest of the proposal, such as using the IDC_Start and IDC_Continue categories that you mentioned.</div><div><br></div><div>Nevin</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 21, 2016 at 4:10 PM, Xiaodi Wu <span dir="ltr"><<a href="mailto:xiaodi.wu@gmail.com" target="_blank">xiaodi.wu@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>A few other thoughts:</div><div><br></div><div>* One of our (or at least my) overarching goals for this proposal is to refine identifier and operator sets by moving away from an ad-hoc character-by-character approach to a systematic treatment that relies on well-defined criteria to select blocks of characters for inclusion. My personal opinion is that reverting to discussions of individual characters, such as the turned ampersand, means we're simply re-shuffling the current set of identifier and operator characters to a different one, having failed to discover any systematic basis for doing so. I think one of the strongest parts of this proposal is the straight-up statement that identifier start characters shall be IDC_Start and identifier continuation characters shall be IDC_Continue, modulo a few ASCII characters that require special treatment in Swift.</div><div><br></div><div>* Particularly if the community insists on emoji being identifiers, we will have to critically evaluate how to proceed on that in tandem with operators, because there exist emojified operators and arrows, and certain emoji are encoded in blocks that are otherwise symbols, which Unicode is likely to deem as operators in the future. Moreover, IIUC, certain codepoints can be either emoji or non-emoji symbols and variant selectors can specify which they are, but in the absence of a variant selector *either* the emoji or non-emoji version can be correctly displayed depending on the platform. For some of these, the non-emoji version is either clearly or plausible an operator character. Therefore, without dealing *very* carefully with emoji and with operators at the same time, we are failing to address a key motivation of this proposal, which is to fix the incorrect separation between emoji operators and emoji identifiers.</div><div><div class="h5"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 21, 2016 at 2:36 PM, Xiaodi Wu <span dir="ltr"><<a href="mailto:xiaodi.wu@gmail.com" target="_blank">xiaodi.wu@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I disagree pretty strongly with this approach. Firstly because as you've pointed out, changes to the operator characters will have effects on valid operator character sets, secondly because a major question about operators is whether it is feasible or no to manually exclude empty set and infinity given that Unicode is likely to reject that approach. For these reasons I feel very strongly that the reforming the operator and identifier characters must move in tandem.<div class="m_6681701520703962433HOEnZb"><div class="m_6681701520703962433h5"><br><div class="gmail_quote"><div dir="ltr">On Fri, Oct 21, 2016 at 14:28 Nevin Brackett-Rozinsky via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_6681701520703962433m_7031135155568671463gmail_msg">I think it is important that we as a community discuss the non-operator portion of this proposal. And, given the strong opinions about operators that have been expressed, I think it is unlikely we will do so while major operator changes are on the table.<div class="m_6681701520703962433m_7031135155568671463gmail_msg"><br class="m_6681701520703962433m_7031135155568671463gmail_msg"></div><div class="m_6681701520703962433m_7031135155568671463gmail_msg">Thus I would suggest that either the operator changes should be separated out into their own proposal, or we should make only minor (and generally consensus-agreed) changes to the operator set as part of this one.</div><div class="m_6681701520703962433m_7031135155568671463gmail_msg"><br class="m_6681701520703962433m_7031135155568671463gmail_msg"></div><div class="m_6681701520703962433m_7031135155568671463gmail_msg">Here is what I propose:</div><div class="m_6681701520703962433m_7031135155568671463gmail_msg"><br class="m_6681701520703962433m_7031135155568671463gmail_msg"></div><div class="m_6681701520703962433m_7031135155568671463gmail_msg">Emoji shall be identifiers, not operators.</div><div class="m_6681701520703962433m_7031135155568671463gmail_msg">The turned ampersand shall be an operator, not an identifier.<br class="m_6681701520703962433m_7031135155568671463gmail_msg"></div><div class="m_6681701520703962433m_7031135155568671463gmail_msg">The empty set and infinity symbols shall be identifiers, not operators.</div><div class="m_6681701520703962433m_7031135155568671463gmail_msg"><br class="m_6681701520703962433m_7031135155568671463gmail_msg"></div><div class="m_6681701520703962433m_7031135155568671463gmail_msg">All other potential changes to the set of operator characters then go in their own proposal, which I am sure will receive a lot of attention.</div><div class="m_6681701520703962433m_7031135155568671463gmail_msg"><br class="m_6681701520703962433m_7031135155568671463gmail_msg"></div><div class="m_6681701520703962433m_7031135155568671463gmail_msg">It may turn out that the non-operator portion of this proposal nonetheless touches characters that Swift has designated for operators, in which case we may address those as they arise.</div><div class="m_6681701520703962433m_7031135155568671463gmail_msg"><br class="m_6681701520703962433m_7031135155568671463gmail_msg"></div><div class="m_6681701520703962433m_7031135155568671463gmail_msg">Does that sound like a reasonable way forward?</div></div><div dir="ltr" class="m_6681701520703962433m_7031135155568671463gmail_msg"><div class="m_6681701520703962433m_7031135155568671463gmail_msg"><br class="m_6681701520703962433m_7031135155568671463gmail_msg"></div><div class="m_6681701520703962433m_7031135155568671463gmail_msg">Nevin</div><div class="m_6681701520703962433m_7031135155568671463gmail_msg"><br class="m_6681701520703962433m_7031135155568671463gmail_msg"></div><div class="m_6681701520703962433m_7031135155568671463gmail_msg"><br class="m_6681701520703962433m_7031135155568671463gmail_msg"></div></div><div class="gmail_extra m_6681701520703962433m_7031135155568671463gmail_msg"><br class="m_6681701520703962433m_7031135155568671463gmail_msg"><div class="gmail_quote m_6681701520703962433m_7031135155568671463gmail_msg">On Fri, Oct 21, 2016 at 9:27 AM, Ben Rimmington via swift-evolution <span dir="ltr" class="m_6681701520703962433m_7031135155568671463gmail_msg"><<a href="mailto:swift-evolution@swift.org" class="m_6681701520703962433m_7031135155568671463gmail_msg" target="_blank">swift-evolution@swift.org</a>></span> wrote:<br class="m_6681701520703962433m_7031135155568671463gmail_msg"><blockquote class="gmail_quote m_6681701520703962433m_7031135155568671463gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="m_6681701520703962433m_7031135155568671463gmail_msg"><br class="m_6681701520703962433m_7031135155568671463gmail_msg">
> On 21 Oct 2016, at 13:42, Benjamin Spratling wrote:<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
><br class="m_6681701520703962433m_7031135155568671463gmail_msg">
> Brackets and symbols are definitely operators. Different brackets are used to represent various quantum mechanical forms and operations.<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
</span>The brackets are mostly "bracket pieces":<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
<span class="m_6681701520703962433m_7031135155568671463gmail_msg"><br class="m_6681701520703962433m_7031135155568671463gmail_msg">
[:Math_Symbol:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
- [:name=/\bANGLE\b/:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
</span><span class="m_6681701520703962433m_7031135155568671463gmail_msg"> - [:Emoji:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
- [:ID_Continue:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
- [:NFC_Quick_Check=No:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
& [:Script_Extensions=Common:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
</span> & [:Block=Miscellaneous_Technica<wbr>l:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
<<a href="http://www.unicode.org/cldr/utility/list-unicodeset.jsp?a=%5B%3AMath_Symbol%3A%5D%0D%0A-+%5B%3Aname%3D%2F%5CbANGLE%5Cb%2F%3A%5D%0D%0A-+%5B%3AEmoji%3A%5D%0D%0A-+%5B%3AID_Continue%3A%5D%0D%0A-+%5B%3ANFC_Quick_Check%3DNo%3A%5D%0D%0A%26+%5B%3AScript_Extensions%3DCommon%3A%5D%0D%0A%26+%5B%3ABlock%3DMiscellaneous_Technical%3A%5D" rel="noreferrer" class="m_6681701520703962433m_7031135155568671463gmail_msg" target="_blank">http://www.unicode.org/cldr/u<wbr>tility/list-unicodeset.jsp?a=%<wbr>5B%3AMath_Symbol%3A%5D%0D%0A-+<wbr>%5B%3Aname%3D%2F%5CbANGLE%5Cb%<wbr>2F%3A%5D%0D%0A-+%5B%3AEmoji%<wbr>3A%5D%0D%0A-+%5B%3AID_Continue<wbr>%3A%5D%0D%0A-+%5B%3ANFC_Quick_<wbr>Check%3DNo%3A%5D%0D%0A%26+%5B%<wbr>3AScript_Extensions%3DCommon%<wbr>3A%5D%0D%0A%26+%5B%3ABlock%3DM<wbr>iscellaneous_Technical%3A%5D</a>><br class="m_6681701520703962433m_7031135155568671463gmail_msg">
<span class="m_6681701520703962433m_7031135155568671463gmail_msg"><br class="m_6681701520703962433m_7031135155568671463gmail_msg">
> Arrows are also useful as operators, including but not restricted to chemical reactions.<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
</span>Including arrows, there are 740 operators:<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
<span class="m_6681701520703962433m_7031135155568671463gmail_msg"><br class="m_6681701520703962433m_7031135155568671463gmail_msg">
[:Math_Symbol:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
- [:name=/\bANGLE\b/:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
- [:name=EMPTY SET:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
- [:name=INFINITY:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
- [:Emoji:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
- [:ID_Continue:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
- [:NFC_Quick_Check=No:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
& [:Script_Extensions=Common:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
</span> & [[:Block=Arrows:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
[:Block=General_Punctuation:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
[:Block=Latin_1_Supplement:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
[:Block=Mathematical_Operator<wbr>s:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
[:Block=Miscellaneous_Mathema<wbr>tical_Symbols_A:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
[:Block=Miscellaneous_Symbols<wbr>_And_Arrows:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
[:Block=Supplemental_Arrows_A<wbr>:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
[:Block=Supplemental_Arrows_B<wbr>:]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
[:Block=Supplemental_Mathemat<wbr>ical_Operators:]]<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
<<a href="http://www.unicode.org/cldr/utility/list-unicodeset.jsp?a=%5B%3AMath_Symbol%3A%5D%0D%0A-+%5B%3Aname%3D%2F%5CbANGLE%5Cb%2F%3A%5D%0D%0A-+%5B%3Aname%3DEMPTY+SET%3A%5D%0D%0A-+%5B%3Aname%3DINFINITY%3A%5D%0D%0A-+%5B%3AEmoji%3A%5D%0D%0A-+%5B%3AID_Continue%3A%5D%0D%0A-+%5B%3ANFC_Quick_Check%3DNo%3A%5D%0D%0A%26+%5B%3AScript_Extensions%3DCommon%3A%5D%0D%0A%26+%5B%5B%3ABlock%3DArrows%3A%5D%0D%0A+++%5B%3ABlock%3DGeneral_Punctuation%3A%5D%0D%0A+++%5B%3ABlock%3DLatin_1_Supplement%3A%5D%0D%0A+++%5B%3ABlock%3DMathematical_Operators%3A%5D%0D%0A+++%5B%3ABlock%3DMiscellaneous_Mathematical_Symbols_A%3A%5D%0D%0A+++%5B%3ABlock%3DMiscellaneous_Symbols_And_Arrows%3A%5D%0D%0A+++%5B%3ABlock%3DSupplemental_Arrows_A%3A%5D%0D%0A+++%5B%3ABlock%3DSupplemental_Arrows_B%3A%5D%0D%0A+++%5B%3ABlock%3DSupplemental_Mathematical_Operators%3A%5D%5D" rel="noreferrer" class="m_6681701520703962433m_7031135155568671463gmail_msg" target="_blank">http://www.unicode.org/cldr/u<wbr>tility/list-unicodeset.jsp?a=%<wbr>5B%3AMath_Symbol%3A%5D%0D%0A-+<wbr>%5B%3Aname%3D%2F%5CbANGLE%5Cb%<wbr>2F%3A%5D%0D%0A-+%5B%3Aname%<wbr>3DEMPTY+SET%3A%5D%0D%0A-+%5B%<wbr>3Aname%3DINFINITY%3A%5D%0D%0A-<wbr>+%5B%3AEmoji%3A%5D%0D%0A-+%5B%<wbr>3AID_Continue%3A%5D%0D%0A-+%<wbr>5B%3ANFC_Quick_Check%3DNo%3A%<wbr>5D%0D%0A%26+%5B%3AScript_<wbr>Extensions%3DCommon%3A%5D%0D%<wbr>0A%26+%5B%5B%3ABlock%3DArrows%<wbr>3A%5D%0D%0A+++%5B%3ABlock%<wbr>3DGeneral_Punctuation%3A%5D%<wbr>0D%0A+++%5B%3ABlock%3DLatin_1_<wbr>Supplement%3A%5D%0D%0A+++%5B%<wbr>3ABlock%3DMathematical_<wbr>Operators%3A%5D%0D%0A+++%5B%<wbr>3ABlock%3DMiscellaneous_<wbr>Mathematical_Symbols_A%3A%5D%<wbr>0D%0A+++%5B%3ABlock%<wbr>3DMiscellaneous_Symbols_And_<wbr>Arrows%3A%5D%0D%0A+++%5B%<wbr>3ABlock%3DSupplemental_Arrows_<wbr>A%3A%5D%0D%0A+++%5B%3ABlock%3D<wbr>Supplemental_Arrows_B%3A%5D%0D<wbr>%0A+++%5B%3ABlock%3DSupplement<wbr>al_Mathematical_Operators%3A%<wbr>5D%5D</a>><br class="m_6681701520703962433m_7031135155568671463gmail_msg">
<div class="m_6681701520703962433m_7031135155568671463m_8003666388572021594HOEnZb m_6681701520703962433m_7031135155568671463gmail_msg"><div class="m_6681701520703962433m_7031135155568671463m_8003666388572021594h5 m_6681701520703962433m_7031135155568671463gmail_msg"><br class="m_6681701520703962433m_7031135155568671463gmail_msg">
-- Ben<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
______________________________<wbr>_________________<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
swift-evolution mailing list<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
<a href="mailto:swift-evolution@swift.org" class="m_6681701520703962433m_7031135155568671463gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="m_6681701520703962433m_7031135155568671463gmail_msg">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" class="m_6681701520703962433m_7031135155568671463gmail_msg" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-evolution</a><br class="m_6681701520703962433m_7031135155568671463gmail_msg">
</div></div></blockquote></div><br class="m_6681701520703962433m_7031135155568671463gmail_msg"></div>
______________________________<wbr>_________________<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
swift-evolution mailing list<br class="m_6681701520703962433m_7031135155568671463gmail_msg">
<a href="mailto:swift-evolution@swift.org" class="m_6681701520703962433m_7031135155568671463gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="m_6681701520703962433m_7031135155568671463gmail_msg">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" class="m_6681701520703962433m_7031135155568671463gmail_msg" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-evolution</a><br class="m_6681701520703962433m_7031135155568671463gmail_msg">
</blockquote></div></div></div></blockquote></div><br></div></div></div></div>
</blockquote></div><br></div>