[swift-evolution] Allowing Characters for use as Custom Operators

Jo Albright me at jo2.co
Fri Jan 8 02:29:32 CST 2016


> The rationale is the same - the design of Swift really wants operators and identifiers to be partitioned into different namespaces.  Violating that would make it impossible to parse a swift file without parsing all of its imports.  This is a mistake that C made (you have to parse all the headers a file uses to reliably parse the file) that we don’t want to replicate in Swift.



Thanks Chris. I now understand the reasoning for separating the two groups. I don’t have a background in language creation, so whatever I can learn from these email lists is awesome. I have already gained a ton of knowledge following these conversations.


> Alternative: Reserve one of the operator characters as an operator introducer. Everything from that character to the next whitespace is an operator name. This would allow non-operator characters in operator names while still preserving the strict operator/identifier separation.
> 
>    // • is the operator introducer character
>    infix operator •times …
>    infix operator •mod …
>    x = a •times b •mod 8
> 
> Limitations:
> You still can't use an unadorned word as an operator name.
> You can't use such an operator without whitespace (unlike operators whose names use operator characters only). 



Oooooo … that is a very cool alternative Greg. Honestly went into this proposal thinking there was no possibility, but now I have a glimmer of hope.

Using “•” (option + 8 on keyboard) would be great since it is accessible through key combo, but isn’t widely used in normal expressions.

What is needed to prove worth of such a feature to be added?


 Nerd . Designer . Developer
Jo Albright

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160108/48e07c71/attachment.html>


More information about the swift-evolution mailing list