<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div>On Mon, Oct 17, 2016, at 11:25 PM, Jean-Denis Muys via swift-evolution wrote:<br></div>
<blockquote type="cite"><div dir="ltr"><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.<br></div>
<div><br></div>
<div>So can I use € as an variable name in Swift? According to Xcode 8.1B3, yes.<br></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.<br></div>
<div><br></div>
<div>[snip]<br></div>
<div><br></div>
<div><span class="colour" style="color:rgb(0, 0, 0)">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&nbsp;them, or it includes all of them.</span><br></div>
<div><span class="colour" style="color:rgb(0, 0, 0)"></span><br></div>
<div><span class="colour" style="color:rgb(0, 0, 0)">I see no reason to exclude them. On the contrary, it was a design feature of Swift to&nbsp;relieve use from the shackles of the ASCII character set.</span><br></div>
<div><span class="colour" style="color:rgb(0, 0, 0)"></span><br></div>
<div><span class="colour" style="color:rgb(0, 0, 0)">In conclusion, I believe this proposal must be accepted, and actually expanded to include&nbsp;</span><span class="colour" style="color:rgb(0, 132, 0)"><span class="font" style="font-family:menlo"><span class="size" style="font-size:11px">¥,&nbsp;¢,&nbsp;£</span></span></span><span class="colour" style="color:rgb(0, 0, 0)">, and also to make it explicit that&nbsp;currency symbols can be used in variable names as first and only character, as first of many characters, and at any position.</span><br></div>
</div>
</blockquote><div><br></div>
<div>Swift doesn't care about currency symbols. The Currency_Symbol general category is not special to Swift. And the fact that $, ¥,&nbsp;¢, and&nbsp;£ (and don't forget about&nbsp;¤, which you didn't list) aren't valid identifiers is a consequence of how they're categorized by Unicode, not some intentional decision by Swift. Specifically, all of the currency symbols that are in the Basic Latin block (e.g. any currency symbol in the range U+0000–U+00FF) have the Pattern_Syntax property. And the Pattern_Syntax property is defined by Unicode (see UAX #31) as a stable set of characters that are appropriate to use for syntax in patterns/expressions (e.g. programming language syntax, regular expressions, ICU number formats, etc). I don't have a good way to test this (UnicodeChecker has no way to search for all characters with the Pattern_Syntax property), but AFAIK all Pattern_Syntax characters are not legal identifiers in Swift, with any character not already reserved for use by the Swift grammar (e.g. $ being used for positional parameters) being available for operators.<br></div>
<div><br></div>
<div>-Kevin Ballard</div>
</body>
</html>