> On Jul 31, 2017, at 5:09 PM, Gor Gyolchanyan via swift-evolution 
> <[email protected]> wrote:
> 
> So I was thinking the other day (and by "the other day" I mean "It just 
> occurred to me") that Swift's custom operator declaration mechanism is pretty 
> sweet (it's become even sweeter ever since numeric precedence values were 
> replaced with purely relativistic precedence trees). There are currently only 
> two problems with them that grind my operator-declaring endeavors to a 
> painful halt:
>       1. The fact that most punctuation characters on the keyboard (think - 
> ASCII) are reserved, so any custom operator either has to be a long sequence 
> of two or three non-reserved ASCII characters or have to include 
> difficult-to-type unicode punctuation characters.
>       2. The fact that anything that passes as an identifier character (which 
> includes a surprisingly wide array of punctuation characters) is off the 
> table as well.
> 
> I have no good idea how to deal with the first problem, but the second 
> problem seems to have a bafflingly simple solution that I can't believe I 
> haven't noticed until now.
> And the reason to even try to solve that problem is because Swift already has 
> a lot of operators with identifiers in them:
>       * infix is
>       * infix as
>       * infix as?
>       * infix as!
>       * prefix try
>       * prefix try?
>       * prefix try!
>       * prefix throw
> So this is hardly a new concept to Schwifty developers.

I think I read on some thread here that the sets of token sequences for 
identifiers and operators are deliberately distinct, so basic parsing agents 
can be made. This can’t be done in C++ because some tokens are too 
context-sensitive for anything less than a full parser; the Swift authors 
didn’t want this to happen here. The keyword operators you gave aren’t a 
general rule, but custom syntax. They work because the exception list is 
limited, and probably won’t be generally open.

— 
Daryle Walker
Mac, Internet, and Video Game Junkie
darylew AT mac DOT com 

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to