<div dir="ltr"><div class="markdown-here-wrapper" style=""><p style="margin:0px 0px 1.2em!important">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&#39;t have such a keyboard, you can always use <code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">ctrl</code>+<code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">⌘</code>+<code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">&lt;space&gt;</code> and type ‘PRIME’ to find it, then pick it from recently used/favourites.</p>
<p style="margin:0px 0px 1.2em!important">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 <code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">⎇</code>+<code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">]</code> and <code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">⎇</code>+<code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">⇧</code>+<code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">]</code> respectively. Xcode could also convert two apostrophes into ‘’ for you and your fingers would quickly learn to type <code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">&#39;</code> <code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">&#39;</code> <code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">←</code> <code style="font-size:1em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">‹char›</code>.</p><p style="margin:0px 0px 1.2em!important"><br></p>
<p style="margin:0px 0px 1.2em!important">On Wed, 11 Jan 2017 at 22:07 David Sweeris via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</p>
<p style="margin:0px 0px 1.2em!important"></p><div class="markdown-here-exclude"><p></p><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br class="gmail_msg">
&gt; On Jan 11, 2017, at 15:41, Joe Groff via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt;&gt; On Jan 11, 2017, at 5:16 AM, Charlie Monroe via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; -1. Why? Why not use foo2 instead? Is &#39; so much better?<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; Instead, I&#39;d personally love better character support in Swift in the future and allow a Character literals using &#39; - just like in C, except with Unicode support:<br class="gmail_msg">
&gt;&gt;<br class="gmail_msg">
&gt;&gt; let myChar = &#39;x&#39; // Character<br class="gmail_msg">
&gt;&gt; let myChar2 = &#39;∃&#39; // Character<br class="gmail_msg">
&gt;&gt; let myChar3 = &#39;\0&#39; // NUL Character<br class="gmail_msg">
&gt;&gt; let myChar4 = &#39;xyz&#39; // Error from compiler<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; These aren&#39;t necessarily mutually exclusive. If we require that an identifier can&#39;t start with an apostrophe, then we can support identifiers named `x&#39;` and `&#39;x&#39;` as some kind of literal simultaneously.<br class="gmail_msg">
&gt;<br class="gmail_msg">
&gt; I&#39;m sympathetic to this since I personally find x&#39;, x&#39;&#39;, 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&#39;d need a mangling for &#39; in symbol names, simplified parsing tools would need to cope with &#39;, tools that attempt to parse out identifiers from error messages would have to deal with apostrophe-unsafe output, etc. Not sure it&#39;s worth it.<br class="gmail_msg">
<br class="gmail_msg">
Out of curiosity, instead of coming up with another mangling scheme, how hard would it be to add &#39; support to the downstream tooling? It&#39;s all open source, right?<br class="gmail_msg">
<br class="gmail_msg">
- Dave Sweeris<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
swift-evolution mailing list<br class="gmail_msg">
<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="gmail_msg">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="gmail_msg">
</blockquote><p></p></div><p style="margin:0px 0px 1.2em!important"></p>
<div title="MDH:PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX21zZyI+PGRpdiBkaXI9Imx0ciIgY2xhc3M9Imdt
YWlsX21zZyI+PGRpdiBjbGFzcz0iZ21haWxfbXNnIj5BcyBSb2IgTWF5b2ZmIHBvaW50ZWQgb3V0
LCB5b3UgY2FuIHVzZSBNT0RJRklFUiBMRVRURVIgUFJJTUUgLSBvciBQUklNRSAtIHdoaWNoIG1h
a2VzIG1vcmUgc2Vuc2UgdGhhbiBhbiBhcG9zdHJvcGhlLiBOb3cgaWYgb25seSB0aGVyZSB3ZXJl
IGEga2V5Ym9hcmQgdGhhdCBoYWQgYSB0b3VjaC1zY3JlZW4gYXQgdGhlIHRvcCB3aGljaCBjb3Vs
ZCB1c2VkIGZvciB0eXBpbmcgY29udGV4dC1zZW5zaXRpdmUgY2hhcmFjdGVycyB0aGF0IHdvdWxk
IG90aGVyd2lzZSBiZSBkaWZmaWN1bHQgdG8gdHlwZS4gU28geWVhaCwgc29sdXRpb24gaXMgdG8g
bWFrZSBjaGFyYWN0ZXJzIGVhc2llciB0byB0eXBlLCBub3QgbW9kaWZ5IHRoZSBsYW5ndWFnZS4g
WW91IGNhbiBhbHdheXMgdXNlIGBjdHJsYCtg4oyYYCtgJmx0O3NwYWNlJmd0O2AgYW5kIHR5cGUg
J1BSSU1FJyB0byBmaW5kIGl0LCB0aGVuIHBpY2sgaXQgZnJvbSByZWNlbnRseSB1c2VkL2Zhdm91
cml0ZXMuPGJyIGNsYXNzPSJnbWFpbF9tc2ciPjxiciBjbGFzcz0iZ21haWxfbXNnIj48L2Rpdj48
ZGl2IGNsYXNzPSJnbWFpbF9tc2ciPlJlZ2FyZGluZyB0aGUgb3RoZXIgcG9pbnQsIEkgYWdyZWUg
dGhhdCBjaGFyYWN0ZXIgbGl0ZXJhbHMgd291bGQgYmUgaGFuZHksIGJ1dCBhZ2FpbiBJJ20gbm90
IHN1cmUgaWYgYXBvc3Ryb3BoZSBpcyB0aGUgcmlnaHQgY2hhcmFjdGVyIHRvIGluZGljYXRlIGl0
LiBBbHRob3VnaCBpdCBpcyBmYW1pbGlhciwgcGVyaGFwcyBMRUZUIFNJTkdMRSBRVU9UQVRJT04g
TUFSSyBhbmQgUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLIHdvdWxkIGJlIGJldHRlciwgdGhl
eSBjYW4gYmUgcmVsYXRpdmVseSBlYXNpbHkgdHlwZWQgd2l0aCBg4o6HYCtgXWAgYW5kIGDijodg
K2Dih6dgK2BdYCByZXNwZWN0aXZlbHkuIFhjb2RlIGNvdWxkIGFsc28gY29udmVydCB0d28gYXBv
c3Ryb3BoZXMgaW50byDigJjigJkgZm9yIHlvdSBhbmQgeW91ciBmaW5nZXJzIHdvdWxkIHF1aWNr
bHkgbGVhcm4gdG8gdHlwZSBgJ2AgYCdgIGDihpBgIGDigLljaGFy4oC6YC48YnIgY2xhc3M9Imdt
YWlsX21zZyI+PGJyIGNsYXNzPSJnbWFpbF9tc2ciPjxiciBjbGFzcz0iZ21haWxfbXNnIj48L2Rp
dj48L2Rpdj48L2Rpdj48ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21haWxfbXNnIj48YnIgY2xhc3M9
ImdtYWlsX21zZyI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUgZ21haWxfbXNnIj48ZGl2IGRpcj0i
bHRyIiBjbGFzcz0iZ21haWxfbXNnIj5PbiBXZWQsIDExIEphbiAyMDE3IGF0IDIyOjA3IERhdmlk
IFN3ZWVyaXMgdmlhIHN3aWZ0LWV2b2x1dGlvbiAmbHQ7PGEgaHJlZj0ibWFpbHRvOnN3aWZ0LWV2
b2x1dGlvbkBzd2lmdC5vcmciIGNsYXNzPSJnbWFpbF9tc2ciIHRhcmdldD0iX2JsYW5rIj5zd2lm
dC1ldm9sdXRpb25Ac3dpZnQub3JnPC9hPiZndDsgd3JvdGU6PGJyIGNsYXNzPSJnbWFpbF9tc2ci
PjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSBnbWFpbF9tc2ciIHN0eWxlPSJt
YXJnaW46MCAwIDAgLjhleDtib3JkZXItbGVmdDoxcHggI2NjYyBzb2xpZDtwYWRkaW5nLWxlZnQ6
MWV4Ij48YnIgY2xhc3M9ImdtYWlsX21zZyI+CiZndDsgT24gSmFuIDExLCAyMDE3LCBhdCAxNTo0
MSwgSm9lIEdyb2ZmIHZpYSBzd2lmdC1ldm9sdXRpb24gJmx0OzxhIGhyZWY9Im1haWx0bzpzd2lm
dC1ldm9sdXRpb25Ac3dpZnQub3JnIiBjbGFzcz0iZ21haWxfbXNnIiB0YXJnZXQ9Il9ibGFuayI+
c3dpZnQtZXZvbHV0aW9uQHN3aWZ0Lm9yZzwvYT4mZ3Q7IHdyb3RlOjxiciBjbGFzcz0iZ21haWxf
bXNnIj4KJmd0OzxiciBjbGFzcz0iZ21haWxfbXNnIj4KJmd0OzxiciBjbGFzcz0iZ21haWxfbXNn
Ij4KJmd0OyZndDsgT24gSmFuIDExLCAyMDE3LCBhdCA1OjE2IEFNLCBDaGFybGllIE1vbnJvZSB2
aWEgc3dpZnQtZXZvbHV0aW9uICZsdDs8YSBocmVmPSJtYWlsdG86c3dpZnQtZXZvbHV0aW9uQHN3
aWZ0Lm9yZyIgY2xhc3M9ImdtYWlsX21zZyIgdGFyZ2V0PSJfYmxhbmsiPnN3aWZ0LWV2b2x1dGlv
bkBzd2lmdC5vcmc8L2E+Jmd0OyB3cm90ZTo8YnIgY2xhc3M9ImdtYWlsX21zZyI+CiZndDsmZ3Q7
PGJyIGNsYXNzPSJnbWFpbF9tc2ciPgomZ3Q7Jmd0OyAtMS4gV2h5PyBXaHkgbm90IHVzZSBmb28y
IGluc3RlYWQ/IElzICcgc28gbXVjaCBiZXR0ZXI/PGJyIGNsYXNzPSJnbWFpbF9tc2ciPgomZ3Q7
Jmd0OzxiciBjbGFzcz0iZ21haWxfbXNnIj4KJmd0OyZndDsgSW5zdGVhZCwgSSdkIHBlcnNvbmFs
bHkgbG92ZSBiZXR0ZXIgY2hhcmFjdGVyIHN1cHBvcnQgaW4gU3dpZnQgaW4gdGhlIGZ1dHVyZSBh
bmQgYWxsb3cgYSBDaGFyYWN0ZXIgbGl0ZXJhbHMgdXNpbmcgJyAtIGp1c3QgbGlrZSBpbiBDLCBl
eGNlcHQgd2l0aCBVbmljb2RlIHN1cHBvcnQ6PGJyIGNsYXNzPSJnbWFpbF9tc2ciPgomZ3Q7Jmd0
OzxiciBjbGFzcz0iZ21haWxfbXNnIj4KJmd0OyZndDsgbGV0IG15Q2hhciA9ICd4JyAvLyBDaGFy
YWN0ZXI8YnIgY2xhc3M9ImdtYWlsX21zZyI+CiZndDsmZ3Q7IGxldCBteUNoYXIyID0gJ+KIgycg
Ly8gQ2hhcmFjdGVyPGJyIGNsYXNzPSJnbWFpbF9tc2ciPgomZ3Q7Jmd0OyBsZXQgbXlDaGFyMyA9
ICdcMCcgLy8gTlVMIENoYXJhY3RlcjxiciBjbGFzcz0iZ21haWxfbXNnIj4KJmd0OyZndDsgbGV0
IG15Q2hhcjQgPSAneHl6JyAvLyBFcnJvciBmcm9tIGNvbXBpbGVyPGJyIGNsYXNzPSJnbWFpbF9t
c2ciPgomZ3Q7PGJyIGNsYXNzPSJnbWFpbF9tc2ciPgomZ3Q7IFRoZXNlIGFyZW4ndCBuZWNlc3Nh
cmlseSBtdXR1YWxseSBleGNsdXNpdmUuIElmIHdlIHJlcXVpcmUgdGhhdCBhbiBpZGVudGlmaWVy
IGNhbid0IHN0YXJ0IHdpdGggYW4gYXBvc3Ryb3BoZSwgdGhlbiB3ZSBjYW4gc3VwcG9ydCBpZGVu
dGlmaWVycyBuYW1lZCBgeCdgIGFuZCBgJ3gnYCBhcyBzb21lIGtpbmQgb2YgbGl0ZXJhbCBzaW11
bHRhbmVvdXNseS48YnIgY2xhc3M9ImdtYWlsX21zZyI+CiZndDs8YnIgY2xhc3M9ImdtYWlsX21z
ZyI+CiZndDsgSSdtIHN5bXBhdGhldGljIHRvIHRoaXMgc2luY2UgSSBwZXJzb25hbGx5IGZpbmQg
eCcsIHgnJywgZXRjLiBtb3JlIGF0dHJhY3RpdmUgdGhhbiB4MiwgeDMsIGV0Yy4gZm9yIHRvdGFs
bHkgc3VwZXJmaWNpYWwgbWF0aCB3ZWVuaWUgcmVhc29ucywgYnV0IGFsdGhvdWdoIHRoZSBzdXJm
YWNlIGxldmVsIGxhbmd1YWdlIGRlc2lnbiBpcyBmYWlybHkgc3RyYWlnaHRmb3J3YXJkLCB0aGUg
ZG93bnN0cmVhbSB0b29saW5nIGltcGFjdCBpcyBub250cml2aWFs4oCUd2UnZCBuZWVkIGEgbWFu
Z2xpbmcgZm9yICcgaW4gc3ltYm9sIG5hbWVzLCBzaW1wbGlmaWVkIHBhcnNpbmcgdG9vbHMgd291
bGQgbmVlZCB0byBjb3BlIHdpdGggJywgdG9vbHMgdGhhdCBhdHRlbXB0IHRvIHBhcnNlIG91dCBp
ZGVudGlmaWVycyBmcm9tIGVycm9yIG1lc3NhZ2VzIHdvdWxkIGhhdmUgdG8gZGVhbCB3aXRoIGFw
b3N0cm9waGUtdW5zYWZlIG91dHB1dCwgZXRjLiBOb3Qgc3VyZSBpdCdzIHdvcnRoIGl0LjxiciBj
bGFzcz0iZ21haWxfbXNnIj4KPGJyIGNsYXNzPSJnbWFpbF9tc2ciPgpPdXQgb2YgY3VyaW9zaXR5
LCBpbnN0ZWFkIG9mIGNvbWluZyB1cCB3aXRoIGFub3RoZXIgbWFuZ2xpbmcgc2NoZW1lLCBob3cg
aGFyZCB3b3VsZCBpdCBiZSB0byBhZGQgJyBzdXBwb3J0IHRvIHRoZSBkb3duc3RyZWFtIHRvb2xp
bmc/IEl0J3MgYWxsIG9wZW4gc291cmNlLCByaWdodD88YnIgY2xhc3M9ImdtYWlsX21zZyI+Cjxi
ciBjbGFzcz0iZ21haWxfbXNnIj4KLSBEYXZlIFN3ZWVyaXM8YnIgY2xhc3M9ImdtYWlsX21zZyI+
CjxiciBjbGFzcz0iZ21haWxfbXNnIj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPHdi
cj5fX19fX19fX19fX19fX19fXzxiciBjbGFzcz0iZ21haWxfbXNnIj4Kc3dpZnQtZXZvbHV0aW9u
IG1haWxpbmcgbGlzdDxiciBjbGFzcz0iZ21haWxfbXNnIj4KPGEgaHJlZj0ibWFpbHRvOnN3aWZ0
LWV2b2x1dGlvbkBzd2lmdC5vcmciIGNsYXNzPSJnbWFpbF9tc2ciIHRhcmdldD0iX2JsYW5rIj5z
d2lmdC1ldm9sdXRpb25Ac3dpZnQub3JnPC9hPjxiciBjbGFzcz0iZ21haWxfbXNnIj4KPGEgaHJl
Zj0iaHR0cHM6Ly9saXN0cy5zd2lmdC5vcmcvbWFpbG1hbi9saXN0aW5mby9zd2lmdC1ldm9sdXRp
b24iIHJlbD0ibm9yZWZlcnJlciIgY2xhc3M9ImdtYWlsX21zZyIgdGFyZ2V0PSJfYmxhbmsiIGRh
dGEtc2FmZXJlZGlyZWN0dXJsPSJodHRwczovL3d3dy5nb29nbGUuY29tL3VybD9xPWh0dHBzOi8v
bGlzdHMuc3dpZnQub3JnL21haWxtYW4vbGlzdGluZm8vc3dpZnQtZXZvbHV0aW9uJmFtcDtzb3Vy
Y2U9Z21haWwmYW1wO3VzdD0xNDg0Mjc0NzkxNjQ0MDAwJmFtcDt1c2c9QUZRakNORWNzcDYwaUhG
MlFGUWtRZlJYUmFvVUdrX0J4dyI+aHR0cHM6Ly9saXN0cy5zd2lmdC5vcmcvPHdicj5tYWlsbWFu
L2xpc3RpbmZvL3N3aWZ0LTx3YnI+ZXZvbHV0aW9uPC9hPjxiciBjbGFzcz0iZ21haWxfbXNnIj4K
PC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2Pg==" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0">​</div></div></div>