<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span style="font-family: Menlo; font-size: 11px; color: rgb(112, 61, 170);" class="">Set</span><span style="font-family: Menlo; font-size: 11px;" class="">(</span><span style="color: rgb(209, 47, 27); font-family: Menlo; font-size: 11px;" class="">"a"</span><span style="font-family: Menlo; font-size: 11px;" class="">, </span><span style="color: rgb(209, 47, 27); font-family: Menlo; font-size: 11px;" class="">"b"</span><span style="font-family: Menlo; font-size: 11px;" class="">, </span><span style="color: rgb(209, 47, 27); font-family: Menlo; font-size: 11px;" class="">"c</span><font color="#d12f1b" face="Menlo" class=""><span style="font-size: 11px;" class="">”</span></font><font face="Menlo" class=""><span style="font-size: 11px;" class="">)&nbsp;</span></font>doesn’t compile. It currently has to be &nbsp;<span style="font-family: Menlo; font-size: 11px; color: rgb(112, 61, 170);" class="">Set</span><span style="font-family: Menlo; font-size: 11px;" class="">(arrayLiteral: </span><span style="font-family: Menlo; font-size: 11px; color: rgb(209, 47, 27);" class="">"a"</span><span style="font-family: Menlo; font-size: 11px;" class="">, </span><span style="font-family: Menlo; font-size: 11px; color: rgb(209, 47, 27);" class="">"b"</span><span style="font-family: Menlo; font-size: 11px;" class="">, </span><span style="font-family: Menlo; font-size: 11px; color: rgb(209, 47, 27);" class="">"c</span><font color="#d12f1b" face="Menlo" class=""><span style="font-size: 11px;" class="">”</span></font><font face="Menlo" class=""><span style="font-size: 11px;" class="">)</span></font>. That said, I’d be satisfied with removing the external parameter name “arrayLiteral”. Not only is it unnecessary, but it’s confusing too: variadic parameters are not the same as an Array.<div class=""><br class=""></div><div class="">Liam<div class=""><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 18, 2016, at 5:43 PM, Howard Lovatt via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class="">Sorry -1 from me. Doesn't seem worth it. Not much wrong with Set("a", "b", "c").<br class=""><br class="">On Tuesday, 19 January 2016, Seth Friedman via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="">I dig the idea of Sets having a literal syntax, rather than continuing to be the ugly stepchild of CollectionTypes. I'm not sure, though, that this particular literal syntax is very obvious. While the Array and Dictionary syntaxes are similar enough to many other languages in which arrays and maps exist, I might be confused if I saw your proposed syntax in Swift.&nbsp;<div class=""><br class=""></div><div class="">Not to mention that it's not the prettiest syntax, but that's more subjective.</div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Mon, Jan 18, 2016 at 1:24 PM, Michael Henson via swift-evolution <span dir="ltr" class="">&lt;<a href="javascript:_e(%7B%7D,'cvml','swift-evolution@swift.org');" target="_blank" class="">swift-evolution@swift.org</a>&gt;</span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="">Swift currently has literal and type shorthand syntax for native Array and Dictionary types, but not the Set type. It would be useful to have a literal shorthand for Set as well.<br class=""><br class="">The existing productions for array and dictionary literals and types share brackets as delimiters, differing only in the contents between the brackets. That poses a slight problem for Set because any syntax, to be useful, must also be easily distinguishable from the other types.<br class=""><br class="">Consider that Arrays and Dictionaries are both naturally indexed collections. Arrays by the integer value of the order of items in the collection, usually implicitly, and Dictionaries by the hashed key associated with each value.<br class=""><br class="">Arrays, implicit index:<div class=""><br class=""></div><div class="">let array = ["a", "b", "c"]</div><div class="">var array: [String]</div><div class="">var empty: [String] = []<br class=""><br class="">Dictionaries, explicit index:</div><div class=""><br class=""></div><div class="">let dictionary = ["a": 1, "b": 5, "c": 9]</div><div class="">var dictionary: [String: Int]</div><div class="">var empty: [String: Int] = [:]<br class=""><br class="">Sets, by contrast, have no particular order and no "key". Even though the Set is enumerable and iterable, it isn't indexed.&nbsp;With that in mind, we can declare that a Set literal or Set type literal should distinguish itself by declaring that it has no index.</div><div class=""><br class="">The Set literal could be:<br class=""><br class=""></div><div class="">let set = [ _: "a", "b", "c" ]<br class="">var set = [ _: String ]</div><div class="">var empty: [ _: String ] = [_:]</div><div class=""><br class=""></div><div class="">In the grammar:<br class=""><br class="">set-literal -&gt; [ _ : array-literal-items[opt] ]<br class="">literal-expression -&gt; array-literal | dictionary-literal | set-literal<br class=""><br class="">set-type -&gt; [ _ : type ]</div><div class="">type -&gt; array-type | dictionary-type | set-type | ... etc.<br class=""><br class=""></div><div class=""><br class="">Examples:<br class=""><br class="">let x = [ _: "A", "B", "C" ]</div><div class="">let y: [ _: String ] = [ _: ]<br class=""><br class=""><br class="">Alternatives considered:<br class=""><br class=""><div class="">Without literals, declaring a Set type is straightforward, easy to recognize, and not much more verbose. There might not be enough of a difference to justify special syntax in the core language.<br class=""><br class="">Mike</div></div></div>
<br class="">_______________________________________________<br class="">
swift-evolution mailing list<br class="">
<a href="javascript:_e(%7B%7D,'cvml','swift-evolution@swift.org');" target="_blank" class="">swift-evolution@swift.org</a><br class="">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="">
<br class=""></blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>-- <br class=""><div class=""><div dir="ltr" class=""><div class=""><div dir="ltr" class="">Seth Friedman<div class=""><i class="">Software Development Engineer II</i></div><div class=""><i class=""><a href="http://amazon.com" class="">Amazon.com</a></i></div></div></div></div></div>
</div>
</blockquote><br class=""><br class="">-- <br class="">&nbsp; -- Howard.<br class=""><br class="">
_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></blockquote></div><br class=""></div></div></div></body></html>