<div dir="ltr">While I already tersely supported this proposal, following all the negative reactions, I feel compelled to revisit my position. The main reason is that it strikes me that most points of view so far, including mine, were really culturally short sighted, and far too much US-centric.<div><br></div><div>I totally agree that '$' being use by one (or even several) piece of code is not reason enough to change the language. But I also think that it being used by only one piece of code is no reason to reject the change.</div><div><br></div><div>Most of us, including me, have been blinded by two things:</div><div><br></div><div>1- the use of the $ sign in other programming languages</div><div>2- the use of the $ sign in Swift as a prefix for implicitly declared closure parameters</div><div><br></div><div>I think this second use is not Swifty at all. It clearly (to me) would fail the litmus test "if it wasn't there, would you add it to the language?". Of course, it has been blessed by time, and it has *become* Swifty, by usage because it's a useful feature, despite the choice of its syntax being so ugly (to my non-american eyes).</div><div><br></div><div>Similarly, I believe the use of the $ in other language should not be a guide in the decision here, either positively, nor negatively. We may pay some mild attention to the concern that we should perhaps avoid some confusion. I haven't seen much of that.</div><div><br></div><div>Now for the elephant in the room: '$' is a currency symbol. As such it should be handled like any other currency symbol. Thinking otherwise would be very culturally offensive.</div><div><br></div><div>So can I use € as an variable name in Swift? According to Xcode 8.1B3, yes.</div><div>Can I use any currency symbol as an variable name in Swift? According to Xcode 8.1B3, not quite, but almost all of them.</div><div><br></div><div>According to Mac OS "Emoji and Symbols" browser, there are 37 currency symbols in Unicode:</div><div><br></div><div><p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo;color:rgb(209,47,27)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"> currencyAndSymbols = </span><span style="font-variant-ligatures:no-common-ligatures">"$€¥¢£₽₨₩฿₺₮₱₭₴₦</span><span style="line-height:normal;font-family:'kohinoor bangla';font-variant-ligatures:no-common-ligatures">৲৳</span><span style="line-height:normal;font-family:'gujarati sangam mn';font-variant-ligatures:no-common-ligatures">૱</span><span style="line-height:normal;font-family:'tamil sangam mn';font-variant-ligatures:no-common-ligatures">௹</span><span style="line-height:normal;font-family:'courier new';font-variant-ligatures:no-common-ligatures">﷼</span><span style="font-variant-ligatures:no-common-ligatures">₹₲₪₡₫</span><span style="line-height:normal;font-family:'khmer sangam mn';font-variant-ligatures:no-common-ligatures">៛</span><span style="font-variant-ligatures:no-common-ligatures">₵₢₸₤₳₥</span><span style="line-height:normal;font-family:monaco;font-variant-ligatures:no-common-ligatures">₠</span><span style="font-variant-ligatures:no-common-ligatures">₣</span><span style="line-height:normal;font-family:'lucida grande';font-variant-ligatures:no-common-ligatures">₰</span><span style="font-variant-ligatures:no-common-ligatures">₧</span><span style="line-height:normal;font-family:'lucida grande';font-variant-ligatures:no-common-ligatures">₯</span><span style="line-height:normal;font-family:geneva;font-variant-ligatures:no-common-ligatures">₶</span><span style="font-variant-ligatures:no-common-ligatures">"</span></p></div><div>I tried every one of them as a variable name. All were accepted, except 3: <span style="color:rgb(0,132,0);font-family:menlo;font-size:11px">¥, </span><span style="color:rgb(0,132,0);font-family:menlo;font-size:11px">¢, </span><span style="color:rgb(0,132,0);font-family:menlo;font-size:11px">£:</span></div><div><br></div><div><p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo;color:rgb(0,132,0)"><span style="font-variant-ligatures:no-common-ligatures">// let ¥ = 1 // error: expected pattern</span></p></div><div><br></div><div>Note the poor error message.</div><div><br></div><div>Here are 33 successful attempts:</div><div><br></div><div><p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> $ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> € = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo;color:rgb(0,132,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="color:rgb(34,34,34);font-variant-ligatures:no-common-ligatures"> ₽ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span><br></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₨ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₩ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ฿ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₺ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₮ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₱ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₭ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₴ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₦ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="line-height:normal;font-family:'kohinoor bangla';font-variant-ligatures:no-common-ligatures">৲</span><span style="font-variant-ligatures:no-common-ligatures"> = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="line-height:normal;font-family:'kohinoor bangla';font-variant-ligatures:no-common-ligatures">৳</span><span style="font-variant-ligatures:no-common-ligatures"> = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="line-height:normal;font-family:'gujarati sangam mn';font-variant-ligatures:no-common-ligatures">૱</span><span style="font-variant-ligatures:no-common-ligatures"> = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="line-height:normal;font-family:'tamil sangam mn';font-variant-ligatures:no-common-ligatures">௹</span><span style="font-variant-ligatures:no-common-ligatures"> = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₹ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₲ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₪ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₡ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₫ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="line-height:normal;font-family:'khmer sangam mn';font-variant-ligatures:no-common-ligatures">៛</span><span style="font-variant-ligatures:no-common-ligatures"> = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₵ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₢ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₸ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₤ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₳ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₥ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="line-height:normal;font-family:monaco;font-variant-ligatures:no-common-ligatures">₠</span><span style="font-variant-ligatures:no-common-ligatures"> = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₣ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="line-height:normal;font-family:'lucida grande';font-variant-ligatures:no-common-ligatures">₰</span><span style="font-variant-ligatures:no-common-ligatures"> = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> ₧ = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="line-height:normal;font-family:'lucida grande';font-variant-ligatures:no-common-ligatures">₯</span><span style="font-variant-ligatures:no-common-ligatures"> = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="line-height:normal;font-family:geneva;font-variant-ligatures:no-common-ligatures">₶</span><span style="font-variant-ligatures:no-common-ligatures"> = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">1</span></p></div><div><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)"><br></span></div><div><p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo;color:rgb(209,47,27)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(61,29,129)">print</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">(</span><span style="font-variant-ligatures:no-common-ligatures">"</span><span style="line-height:normal;font-family:geneva;font-variant-ligatures:no-common-ligatures">₶</span><span style="font-variant-ligatures:no-common-ligatures"> = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">\</span><span style="font-variant-ligatures:no-common-ligatures">(</span><span style="line-height:normal;font-family:geneva;font-variant-ligatures:no-common-ligatures;color:rgb(79,129,135)">₶</span><span style="font-variant-ligatures:no-common-ligatures">)"</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">)</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo;color:rgb(61,29,129)"><span style="font-variant-ligatures:no-common-ligatures">print</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">(</span><span style="line-height:normal;font-family:geneva;font-variant-ligatures:no-common-ligatures;color:rgb(79,129,135)">₶</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">+</span><span style="line-height:normal;font-family:geneva;font-variant-ligatures:no-common-ligatures;color:rgb(79,129,135)">₶</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">+</span><span style="line-height:normal;font-family:geneva;font-variant-ligatures:no-common-ligatures;color:rgb(79,129,135)">₶</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">)</span></p></div><div><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"><br></span></div><div><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">And finally, there is the very weird Rial Sign: </span><span style="color:rgb(79,129,135);font-family:'courier new';font-size:11px">﷼</span></div><div><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">It is ok to use it as an variable name too (again, according to Xcode8.1B3).</span></div><div><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">But when trying to use it, Xcode switches to right-to-left mode, which makes for strange (for my occidental eyes) behaviour and display. All the following is OK in Xcode:</span></div><div><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"><br></span></div><div><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"><p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo;color:rgb(0,132,0)"><span style="font-variant-ligatures:no-common-ligatures">// unusual Xcode right-to-left behavior with Rial Sign</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(187,44,162)">let</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="line-height:normal;font-family:'courier new';font-variant-ligatures:no-common-ligatures">﷼</span><span style="font-variant-ligatures:no-common-ligatures"> = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)">21</span></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo;min-height:13px"><span style="font-variant-ligatures:no-common-ligatures"></span><br></p>
<p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo;color:rgb(0,132,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(61,29,129)">print</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">(</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(209,47,27)">"</span><span style="line-height:normal;font-family:'courier new';font-variant-ligatures:no-common-ligatures;color:rgb(209,47,27)">﷼</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(209,47,27)">= </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">\</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(209,47,27)">(</span><span style="line-height:normal;font-family:'courier new';font-variant-ligatures:no-common-ligatures;color:rgb(79,129,135)">﷼</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(209,47,27)">)"</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">) </span><span style="font-variant-ligatures:no-common-ligatures">// will print </span><span style="line-height:normal;font-family:'courier new';font-variant-ligatures:no-common-ligatures">﷼</span><span style="font-variant-ligatures:no-common-ligatures">= 21</span></p><div><span style="font-variant-ligatures:no-common-ligatures"><br></span></div></span></div><div><font color="#000000">Of course, this is just a data point, and Xcode8.1B3 should not be the arbiter here. But I believe whether Swift accepts currency symbols as variable names should be consistent. Either it accepts all of them, or it includes all of them.</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">I see no reason to exclude them. On the contrary, it was a design feature of Swift to relieve use from the shackles of the ASCII character set.</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">In conclusion, I believe this proposal must be accepted, and actually expanded to include </font><span style="color:rgb(0,132,0);font-family:menlo;font-size:11px">¥, </span><span style="color:rgb(0,132,0);font-family:menlo;font-size:11px">¢, </span><span style="color:rgb(0,132,0);font-family:menlo;font-size:11px">£</span><font color="#000000">, and also to make it explicit that currency symbols can be used in variable names as first and only character, as first of many characters, and at any position.</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">This would make $0, $1, $2… legal variable names. I believe this is OK.</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">What would happen to </font>implicitly declared closure parameters then? Nothing. They would continue to be implicitly declared in the context of closures that do not declare their parameters explicitly, similarly to `self` being implicitly declared in the context of a class. A user willing to use $0 there would be facing a name collision, which is OK. </div><div><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"><br></span></div><div><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">Note that such a change is purely additive: no legal source code today would fail with this change.</span></div><div><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"><br></span></div><div><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">I hope that at the very least, I opened a new perspective on this proposal, and I hope we can find a way to be less culturally biased.</span></div><div><br></div><div>Jean-Denis</div><div><br></div><div><span style="font-size:12.800000190734863px"> * What is your evaluation of the proposal?</span></div><div><br></div><div>+1. However, it should be expanded to include all Unicode currency symbols.</div><div><br style="font-size:12.800000190734863px"><span style="font-size:12.800000190734863px"> * Is the problem being addressed significant enough to warrant a change to Swift?</span></div><div><br></div><div>Very much so, because it reveals a significant inconsistency in the way the language handles characters for identifiers.</div><div><br style="font-size:12.800000190734863px"><span style="font-size:12.800000190734863px"> * Does this proposal fit well with the feel and direction of Swift?</span></div><div><br></div><div>Very much so, considering the language made a point to support unicode characters in identifiers, and '$' should behave consistently with the other Unicode currency symbols.</div><div><br style="font-size:12.800000190734863px"><span style="font-size:12.800000190734863px"> * If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?</span></div><div><br></div><div>In the specific case, this is irrelevant. We are in territory only treaded by Swift</div><div><br style="font-size:12.800000190734863px"><span style="font-size:12.800000190734863px"> * How much effort did you put into your review? A glance, a quick reading, or an in-depth study?</span><br style="font-size:12.800000190734863px"></div><div><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px">A lot of time. I read the proposal, all the answers, spent significant time experimenting with Xcode.</span></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 16 October 2016 at 19:45, Jay Abbott via swift-evolution <span dir="ltr"><<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span class=""><div>> * What is your evaluation of the proposal?<br><br></div></span>I am against it.<span class=""><br><div><br class="m_2261306318347468527gmail_msg">
> * Is the problem being addressed significant enough to warrant a change to Swift?<br><br></div></span><div>No - if this change were made it would be a regression. The rationale for removing it in the first place was and remains valid.<br></div><span class=""><div><br class="m_2261306318347468527gmail_msg">
> * Does this proposal fit well with the feel and direction of Swift?<br><br></div></span><div>No, it goes in the opposite direction. $ is not valid as the first character of a user-defined identifier and therefore should not be a valid identifier by itself.<br><br></div><div>Side-note: Personally I think $ as the first character of an identifier should be reserved for shorthand ways to do other things, in line with how it is currently used in Swift.<br></div><div>If used consistently, programmers will know they are seeing a language shortcut. Allowing $ as an identifier would break some of the natural intuition a programmer is able to use when learning and reading Swift code.<br></div><span class=""><div></div><div><br class="m_2261306318347468527gmail_msg">
> * If you have used other languages or libraries with a
similar feature, how do you feel that this proposal compares to those?<br><br></div></span><div>The proposal seems purely for the benefit of the Dollar library, which could work just as well with any other identifier. Code using the dollar library is reminiscent of some other languages and programming styles. This isn't really a comment about the proposal itself, more the motivation behind it.<br></div><span class=""><div><br class="m_2261306318347468527gmail_msg">
> * How much effort did you put into your review? A glance, a quick reading, or an in-depth study?<br><br></div></span><div>I read the proposal and was perplexed by it, so I looked into the Dollar library to try and understand the motivation behind the proposal. It is a clever library with some nice features and tricks, but in many ways it seems to be designed to enable programmers to write non-Swifty code in Swift. I can understand the frustration of the author and users of the library, but its functionality could be provided in a Swifty way using extensions and generics, and I think if those users embraced this they would ultimately appreciate the change. If not then they might as well stick to another language.<br></div><div><br></div></div><br><div class="gmail_quote"><div><div class="h5"><div dir="ltr">On Sun, 16 Oct 2016 at 17:31 Jacob Bandes-Storch via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> wrote:<br></div></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr" class="m_2261306318347468527gmail_msg"><div class="gmail_extra m_2261306318347468527gmail_msg"><div class="gmail_quote m_2261306318347468527gmail_msg"><div class="m_2261306318347468527gmail_msg">Proposal link: </div><br style="font-size:12.8px" class="m_2261306318347468527gmail_msg"><span style="font-size:12.8px" class="m_2261306318347468527gmail_msg"> </span><a href="https://github.com/apple/swift-evolution/blob/master/proposals/0144-allow-single-dollar-sign-as-valid-identifier.md" rel="noreferrer" style="font-size:12.8px" class="m_2261306318347468527gmail_msg" target="_blank">https://github.com/apple/<wbr>swift-evolution/blob/master/<wbr>proposals/0144-allow-single-<wbr>dollar-sign-as-valid-<wbr>identifier.md</a></div></div></div><div dir="ltr" class="m_2261306318347468527gmail_msg"><div class="gmail_extra m_2261306318347468527gmail_msg"><div class="gmail_quote m_2261306318347468527gmail_msg"><div class="m_2261306318347468527gmail_msg"> </div><blockquote class="gmail_quote m_2261306318347468527gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> * What is your evaluation of the proposal?<br class="m_2261306318347468527gmail_msg"></blockquote><div class="m_2261306318347468527gmail_msg"><br class="m_2261306318347468527gmail_msg"></div></div></div></div><div dir="ltr" class="m_2261306318347468527gmail_msg"><div class="gmail_extra m_2261306318347468527gmail_msg"><div class="gmail_quote m_2261306318347468527gmail_msg"><div class="m_2261306318347468527gmail_msg">-1.</div><div class="m_2261306318347468527gmail_msg"><br class="m_2261306318347468527gmail_msg"></div><div class="m_2261306318347468527gmail_msg">The proposal does not actually provide motivation for keeping $ beyond "the Dollar library already uses it".</div><div class="m_2261306318347468527gmail_msg"><br class="m_2261306318347468527gmail_msg"></div><div class="m_2261306318347468527gmail_msg">A more Swifty way for a library to introduce these operations would be with extensions. Here are some suggestions, based off the first several operations described in the library's readme:</div><div class="m_2261306318347468527gmail_msg"><br class="m_2261306318347468527gmail_msg"></div><div class="m_2261306318347468527gmail_msg">$.at → convenience subscript(Index...) for Collection</div><div class="m_2261306318347468527gmail_msg">$.chunk → convenience function for Sequence</div><div class="m_2261306318347468527gmail_msg">$.compact → flatMap{$0}</div><div class="m_2261306318347468527gmail_msg">$.contains → already exists as Sequence.contains</div><div class="m_2261306318347468527gmail_msg">$.cycle → convenience function for Collection</div><div class="m_2261306318347468527gmail_msg">$.difference → convenience function on Collection, or just use Set operations, or filter</div><div class="m_2261306318347468527gmail_msg">$.each → exists as Sequence.forEach</div>$.every → extension on Sequence<div class="m_2261306318347468527gmail_msg">$.factorial → convenience method or postfix operator for Integer</div><div class="m_2261306318347468527gmail_msg">$.fetch → convenience function on Collection</div><div class="m_2261306318347468527gmail_msg">and so on.</div><div class="m_2261306318347468527gmail_msg"><br class="m_2261306318347468527gmail_msg"></div><div class="m_2261306318347468527gmail_msg">It looks like the author's <a href="https://github.com/ankurp/Cent" class="m_2261306318347468527gmail_msg" target="_blank">Cent</a> library is already taking this approach.</div></div></div></div><div dir="ltr" class="m_2261306318347468527gmail_msg"><div class="gmail_extra m_2261306318347468527gmail_msg"><div class="gmail_quote m_2261306318347468527gmail_msg"><div class="m_2261306318347468527gmail_msg"><br class="m_2261306318347468527gmail_msg"></div><div class="m_2261306318347468527gmail_msg"> </div><blockquote class="gmail_quote m_2261306318347468527gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
* Is the problem being addressed significant enough to warrant a change to Swift?<br class="m_2261306318347468527gmail_msg"></blockquote><div class="m_2261306318347468527gmail_msg"><br class="m_2261306318347468527gmail_msg"></div></div></div></div><div dir="ltr" class="m_2261306318347468527gmail_msg"><div class="gmail_extra m_2261306318347468527gmail_msg"><div class="gmail_quote m_2261306318347468527gmail_msg"><div class="m_2261306318347468527gmail_msg">Yes, but the change has already been made: removing $ as a valid identifier ;-)</div></div></div></div><div dir="ltr" class="m_2261306318347468527gmail_msg"><div class="gmail_extra m_2261306318347468527gmail_msg"><div class="gmail_quote m_2261306318347468527gmail_msg"><div class="m_2261306318347468527gmail_msg"><br class="m_2261306318347468527gmail_msg"></div><div class="m_2261306318347468527gmail_msg"> </div><blockquote class="gmail_quote m_2261306318347468527gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
* Does this proposal fit well with the feel and direction of Swift?<br class="m_2261306318347468527gmail_msg"></blockquote><div class="m_2261306318347468527gmail_msg"><br class="m_2261306318347468527gmail_msg"></div></div></div></div><div dir="ltr" class="m_2261306318347468527gmail_msg"><div class="gmail_extra m_2261306318347468527gmail_msg"><div class="gmail_quote m_2261306318347468527gmail_msg"><div class="m_2261306318347468527gmail_msg">Not really. If anything, IMO, the dollar sign feels more like an operator character. (However, it's probably here to stay in identifiers because of closure parameters and LLDB variables.)</div></div></div></div><div dir="ltr" class="m_2261306318347468527gmail_msg"><div class="gmail_extra m_2261306318347468527gmail_msg"><div class="gmail_quote m_2261306318347468527gmail_msg"><div class="m_2261306318347468527gmail_msg"><br class="m_2261306318347468527gmail_msg"></div><div class="m_2261306318347468527gmail_msg"> </div><blockquote class="gmail_quote m_2261306318347468527gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
* If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?<br class="m_2261306318347468527gmail_msg"></blockquote><div class="m_2261306318347468527gmail_msg"><br class="m_2261306318347468527gmail_msg"></div></div></div></div><div dir="ltr" class="m_2261306318347468527gmail_msg"><div class="gmail_extra m_2261306318347468527gmail_msg"><div class="gmail_quote m_2261306318347468527gmail_msg"><div class="m_2261306318347468527gmail_msg">The Dollar library resembles the style of JavaScript libraries such as jQuery or Underscore, but that isn't a positive thing in my mind — as mentioned above, the Swift way of doing things is different.</div></div></div></div><div dir="ltr" class="m_2261306318347468527gmail_msg"><div class="gmail_extra m_2261306318347468527gmail_msg"><div class="gmail_quote m_2261306318347468527gmail_msg"><div class="m_2261306318347468527gmail_msg"><br class="m_2261306318347468527gmail_msg"></div><div class="m_2261306318347468527gmail_msg"> </div><blockquote class="gmail_quote m_2261306318347468527gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
* How much effort did you put into your review? A glance, a quick reading, or an in-depth study?<br class="m_2261306318347468527gmail_msg"></blockquote><div class="m_2261306318347468527gmail_msg"><br class="m_2261306318347468527gmail_msg"></div></div></div></div><div dir="ltr" class="m_2261306318347468527gmail_msg"><div class="gmail_extra m_2261306318347468527gmail_msg"><div class="gmail_quote m_2261306318347468527gmail_msg"><div class="m_2261306318347468527gmail_msg">Thorough reading of the proposal; brief glance at the library's readme on GitHub. Lots of time thinking about operator & identifier characters for a forthcoming proposal.</div><div class="m_2261306318347468527gmail_msg"><br class="m_2261306318347468527gmail_msg"></div></div></div></div></div></div><span class="">
______________________________<wbr>_________________<br class="m_2261306318347468527gmail_msg">
swift-evolution mailing list<br class="m_2261306318347468527gmail_msg">
<a href="mailto:swift-evolution@swift.org" class="m_2261306318347468527gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="m_2261306318347468527gmail_msg">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" class="m_2261306318347468527gmail_msg" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-<wbr>evolution</a><br class="m_2261306318347468527gmail_msg">
</span></blockquote></div>
<br>______________________________<wbr>_________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-<wbr>evolution</a><br>
<br></blockquote></div><br></div>