<div dir="ltr">I know it&#39;s a bit late to the party :) but I have to disagree with the original premise.<div>The colon in the dictionary doesn&#39;t really separate names and values, it separates values and values:</div><div><br></div><div>[&quot;something&quot; + &quot;else&quot; : 1 + 2] </div><div><br></div><div>is a perfectly valid dictionary that doesn&#39;t read nor write anything by name. In other words, there are no lhs-expressions there and that&#39;s ok.</div><div><br></div><div>We use = to rebind the names or, more generally, call setters, and when we do this an lhs-expression is required, well, on the left side of an assignment operator. This is in no way related to what happens with the dictionary. </div><div><br></div><div>The situation is different with function parameters. We don&#39;t really pass a dictionary; if we did, we&#39;d use something like myFunc(&quot;&quot;:foo, &quot;bar&quot;: baz) as a syntax. </div><div><br></div><div>One can attempt to read the syntax as binding names that the function can use as parameters, but this doesn&#39;t really work either: we only know the parameter&#39;s external names and this binding doesn&#39;t &quot;leak&quot; into the original scope. So if we are thinking about function call as an assignment, then it should be in an extremely short-lived scope contained within a function call. It doesn&#39;t look like this view will bring us any benefits. </div><div><br></div><div>I think it&#39;s best to imagine the colon in function calls as simply a third punctuation symbol. We do need to select a simple, readily available symbol that cannot be easily mixed with colon-inside-the-dictionary and regular-assignment-symbol, yet is still instantly recognisable. Reusing the colon is a reasonable compromise, although =&gt; would also work (and I wish it was given serious consideration). </div><div><br></div><div>Though I agree that it seems a bit excessive to have a separate syntax for @available&#39;s parameters.</div><div><br></div><div>Ilya.</div><div> </div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Feb 6, 2016 at 12:27 AM, Brent Royal-Gordon via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This is perhaps a bit nitpicky, but I&#39;ve noticed that Swift sometimes uses colon to separate names and values, and sometimes uses equals. It&#39;s vaguely maddening.<br>
<br>
What do I mean? Well, our language has this:<br>
<br>
        myFunc(foo, bar: baz)<br>
<br>
But it also has:<br>
<br>
        @available(iOS, introduced=7.0, deprecated=8.0)<br>
<br>
You create a dictionary like this:<br>
<br>
        let dict = [&quot;key&quot;: &quot;value&quot;]<br>
<br>
But you set it like this:<br>
<br>
        dict[&quot;key&quot;] = &quot;value&quot;<br>
<br>
Is there some principle here? The @available case seems particularly strange to me, because those values read strongly like parameters to me.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Brent Royal-Gordon<br>
Architechies<br>
<br>
_______________________________________________<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/mailman/listinfo/swift-evolution</a><br>
</font></span></blockquote></div><br></div>