[swift-evolution] Allow ' in variable/constant names?

David Sweeris davesweeris at mac.com
Wed Jan 11 23:53:03 CST 2017


> On Jan 11, 2017, at 23:12, Tony Allevato <tony.allevato at gmail.com> wrote:
> 
> 
> 
>> On Wed, Jan 11, 2017 at 6:46 PM Jay Abbott via swift-evolution <swift-evolution at swift.org> wrote:
>> As Rob Mayoff pointed out, you can use MODIFIER LETTER PRIME - or PRIME, DOUBLE PRIME, and TRIPLE PRIME - which makes more sense than an apostrophe. Now if only there were a keyboard that had a touch-screen at the top which could be used for typing context-sensitive characters that would otherwise be difficult to type. So yeah, solution is to make characters easier to type, not modify the language. If like me you don't have such a keyboard, you can always use ctrl+⌘+<space> and type ‘PRIME’ to find it, then pick it from recently used/favourites.
>> 
>> Regarding the other point, I agree that character literals would be handy, but again I’m not sure if apostrophe is the right character to indicate it. Although it is familiar, perhaps LEFT SINGLE QUOTATION MARK and RIGHT SINGLE QUOTATION MARK would be better, they can be relatively easily typed with ⎇+] and ⎇+⇧+] respectively. Xcode could also convert two apostrophes into ‘’ for you and your fingers would quickly learn to type ' ' ← ‹char›.
>> 
> I'm not entirely convinced that we *need* special Character literals. The type checker is already able to treat a double-quoted string literal as a String, Character, or UnicodeScalar based on context in most places. Wouldn't it be more valuable to fill the gaps, like Charlie Monroe mentioned above, where these work:
> 
>     let c: Character = "a"
>     let c = "a" as Character
> 
> and this is caught as an error by the compiler:
> 
>     let c: Character = "ax"
> 
> but this slips through and crashes at runtime?
> 
>     let c = Character("ax")
> 
> I wonder what improvements could be made in the compiler to have that last one do something more appropriate than just call Character.init(String), which causes the runtime error.

This reminds me of the "URL literal" thread. I believe the two ideas were essentially to add regex support to the compiler, add support for compiler "validation" of literals through compile-time functions, or both.

IIRC, it was decided that both ideas were at least out of scope for phase 1 (I don't recall if this specific issue was brought up as a potential use case, though... unlike `Character`, `URL` isn't part of the stdlib).

- Dave Sweeris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170111/23f804cf/attachment.html>


More information about the swift-evolution mailing list