> On Oct 20, 2016, at 9:37 AM, Jonathan S. Shapiro 
> <jonathan.s.shap...@gmail.com> wrote:
> 
> On Thu, Oct 20, 2016 at 7:30 AM, David Sweeris <daveswee...@mac.com 
> <mailto:daveswee...@mac.com>> wrote:
> Sent from my iPhone
> 
> On Oct 20, 2016, at 09:03, Jonathan S. Shapiro via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> 
>> On Thu, Oct 20, 2016 at 12:12 AM, Austin Zheng via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>> Freeze the set of allowed emoji to whatever the current version of the 
>> Unicode spec defines...
>> 
>> UAX31 won't include emojis in either space, because there is no clear 
>> consensus about where they belong (identifiers or operators). Individual 
>> languages can certainly add them to one space or the other, but should take 
>> care not to cross-contaminate. So if we add them to operators, we need to 
>> exclude any that are already part of normal identifiers and vice versa. That 
>> sanity restriction is technically necessary, but it shouldn't be an 
>> inconvenience in practical terms.
> 
> My understanding (which is admittedly fuzzy) is that the distinction between 
> operators and identifiers is only "technically necessary" because allowing 
> characters to be both causes the parsing algorithm lose its virtual mind, and 
> it takes a century for it to figure out what's going on. What I don't recall 
> being discussed before is whether that's a blanket penalty or if the compile 
> times increases are proportional to the amount overlap between the two 
> character sets.
> 
> The hard requirements are:
> Nothing in identifier start can be in operator start or operator continue. [*]
> Nothing in operator start can be in identifier start or identifier continue. 
> [*]
> Nothing in syntactic punctuation (period, brackets, parens, and so forth) can 
> be in either type of identifier without creating a lot of serious hair. You 
> can see one example of hair in the "double dots" rule.
> If these requirements are not preserved, the consequence is that white space 
> becomes required between identifiers and operators. So, for example, without 
> these rules:
> 
> a+b    // gets broken
> a + b  // works
> 
> The presence of dots in operators is actually causing a whole bunch of 
> constraints to get introduced that I'm going to talk about in a moment.


Ah, ok. Your explanation sounds very familiar… Clearly I’ve read it before and 
forgot. I must be going senile in my old age (37).

Would this whitespace rule affect pre/postfix operators, or just the infix 
ones? Personally, I’m fine with requiring whitespace around infix operators, 
but pre/postfix operators would completely lose readability if they needed it, 
too. Have we previously discussed this on the mailing list?

Given my apparent forgetfulness, I have no doubt that we discussed it at length 
two weeks ago, and someone will probably reply to this, quoting some forgotten 
3-page email I sent on the topic :-)

- Dave Sweeris
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to