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

Tony Allevato tony.allevato at gmail.com
Wed Jan 11 23:12:28 CST 2017


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.


> On Wed, 11 Jan 2017 at 22:07 David Sweeris via swift-evolution <
> swift-evolution at swift.org> wrote:
>
>
> > On Jan 11, 2017, at 15:41, Joe Groff via swift-evolution <
> swift-evolution at swift.org> wrote:
> >
> >
> >> On Jan 11, 2017, at 5:16 AM, Charlie Monroe via swift-evolution <
> swift-evolution at swift.org> wrote:
> >>
> >> -1. Why? Why not use foo2 instead? Is ' so much better?
> >>
> >> Instead, I'd personally love better character support in Swift in the
> future and allow a Character literals using ' - just like in C, except with
> Unicode support:
> >>
> >> let myChar = 'x' // Character
> >> let myChar2 = '∃' // Character
> >> let myChar3 = '\0' // NUL Character
> >> let myChar4 = 'xyz' // Error from compiler
> >
> > These aren't necessarily mutually exclusive. If we require that an
> identifier can't start with an apostrophe, then we can support identifiers
> named `x'` and `'x'` as some kind of literal simultaneously.
> >
> > I'm sympathetic to this since I personally find x', x'', etc. more
> attractive than x2, x3, etc. for totally superficial math weenie reasons,
> but although the surface level language design is fairly straightforward,
> the downstream tooling impact is nontrivial—we'd need a mangling for ' in
> symbol names, simplified parsing tools would need to cope with ', tools
> that attempt to parse out identifiers from error messages would have to
> deal with apostrophe-unsafe output, etc. Not sure it's worth it.
>
> Out of curiosity, instead of coming up with another mangling scheme, how
> hard would it be to add ' support to the downstream tooling? It's all open
> source, right?
>
> - Dave Sweeris
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170112/85699d57/attachment.html>


More information about the swift-evolution mailing list