<div dir="ltr">Just to make sure we&#39;re on the same page, your suggestion is the following:<div><br></div><div>// Declaration</div><div>func myFunc(v: T...) {}</div><div><br></div><div>// Call</div><div>myFunc([T]...)</div><div><br></div><div>That seems quite ugly, no? I&#39;d prefer the use of a keyword at that point, kind of like we have @autoclosure, but instead of declaring the keyword in the function definition, we use the keyword (e.g., @variadic) in the function call.</div><div><br></div><div>Thoughts on that?</div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div style="color:rgb(0,0,0);font-family:helvetica,arial"><span style="color:rgb(34,34,34);font-family:arial,sans-serif">Best,</span></div><div style="color:rgb(0,0,0);font-family:helvetica,arial"><span style="color:rgb(34,34,34);font-family:arial,sans-serif"><br></span></div><div style="color:rgb(0,0,0);font-family:helvetica,arial"><span style="color:rgb(34,34,34);font-family:arial,sans-serif">Arthur / <a href="http://sabintsev.com/" target="_blank">Sabintsev.com</a> </span></div></div></div></div></div></div>
<br><div class="gmail_quote">On Sat, Dec 12, 2015 at 2:15 AM, Kevin Ballard <span dir="ltr">&lt;<a href="mailto:kevin@sb.org" target="_blank">kevin@sb.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>




<div><div>Using any operator at all is a problem. The only way that can work without conflict is if the operator returns some special type that is known to the compiler to represent a variadic call, but that doesn&#39;t seem like a great idea. What do you think of the ... suffix? That can&#39;t conflict with operators, and it matches the variadic function declaration.<span class="HOEnZb"><font color="#888888"><br></font></span></div><span class="HOEnZb"><font color="#888888">
<div> </div>
<div>-Kevin<br></div></font></span><div><div class="h5">
<div> </div>
<div>On Fri, Dec 11, 2015, at 11:12 PM, Arthur Ariel Sabintsev wrote:<br></div>
<blockquote type="cite"><div dir="ltr"><div>Thanks for your response. <br></div>
<div> </div>
<div>The reason this doesn&#39;t work is due to Swift&#39;s generic system as it allows a type T to be a anything, including arrays. The example that was used to delineate this concept to me was that of &quot;Any...&quot;, which from within the variadic function, could be interpreted as T or [T]. The result is ambiguous in the current implementation, which is why some identifier syntax needs be passed along with an array to get this to work properly.<br></div>
<div> </div>
<div>As for the choice of operator, I&#39;m open to suggestions. I wanted to use one that was familiar to other developers, so I chose the one that Ruby uses. <br></div>
<div> </div>
<div>Maybe a ~ would be better, or a keyword like @variadic?<br></div>
<div> </div>
<div> </div>
<div><div><div><div dir="ltr"><div><div dir="ltr"><div style="color:rgb(0,0,0);font-family:helvetica,arial"><span style="color:rgb(34,34,34)"><span style="font-family:arial,sans-serif">Best,</span></span><br></div>
<div style="color:rgb(0,0,0);font-family:helvetica,arial"> </div>
<div style="color:rgb(0,0,0);font-family:helvetica,arial"><span style="color:rgb(34,34,34)"><span style="font-family:arial,sans-serif">Arthur / <a href="http://sabintsev.com/" target="_blank">Sabintsev.com</a></span></span><br></div>
</div>
</div>
</div>
</div>
</div>
<div> </div>
<div><div>On Sat, Dec 12, 2015 at 1:54 AM, Kevin Ballard 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></div>
<blockquote style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><u></u><br></div>
<div><div>You can&#39;t use * as suggested, because that conflicts with * as a prefix operator.<br></div>
<div> </div>
<div>You could probably get away with using a trailing ... in the call, as in<br></div>
<div> </div>
<div>func foo(xs: [Int]...) {<br></div>
<div>    bar(xs...)<br></div>
<div>}<br></div>
<div> </div>
<div>I also wonder whether there&#39;s a reason Swift doesn&#39;t already support this. Maybe there&#39;s some desired future change to variadic arguments to improve performance (i.e. to avoid having to allocate an array) that wouldn&#39;t be compatible? Although I&#39;m not sure what that would be. Maybe there&#39;s actually no barrier at all and it was just something that wasn&#39;t prioritized. It would be good to know either way.<br></div>
<div> </div>
<div>-Kevin<br></div>
<div><div><div> </div>
<div>On Fri, Dec 11, 2015, at 10:43 PM, Arthur Sabintsev via swift-evolution wrote:<br></div>
</div>
</div>
<blockquote type="cite"><div><div><div style="font-family:Helvetica,Arial;font-size:13px;color:rgb(0,0,0);margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px">Hi,<br></div>
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgb(0,0,0);margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"> </div>
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgb(0,0,0);margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px">I have put together a proposal for passing arrays to variadic functions (along the lines of Ruby’s Splay operator). <br></div>
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgb(0,0,0);margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"> </div>
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgb(0,0,0);margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px">Proposal: <a href="https://github.com/ArtSabintsev/swift-evolution/blob/master/proposals/array-variadic-function.md" target="_blank">https://github.com/ArtSabintsev/swift-evolution/blob/master/proposals/array-variadic-function.md</a><br></div>
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgb(0,0,0);margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px">Pull Request: <a href="https://github.com/apple/swift-evolution/pull/52" target="_blank">https://github.com/apple/swift-evolution/pull/52</a><br></div>
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgb(0,0,0);margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px">Bug Report: <a href="https://bugs.swift.org/browse/SR-128" target="_blank">https://bugs.swift.org/browse/SR-128</a> which led to this proposal<br></div>
<div style="font-family:Helvetica,Arial;font-size:13px;color:rgb(0,0,0);margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"> </div>
<div> </div>
<div><div style="font-family:helvetica,arial;font-size:13px"><div style="color:rgb(34,34,34);font-family:arial,sans-serif">Best,<br></div>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif"> </div>
<div><span style="color:rgb(34,34,34)"><span style="font-family:arial,sans-serif">Arthur / <a href="http://sabintsev.com" target="_blank">Sabintsev.com</a></span></span><br></div>
</div>
</div>
</div>
</div>
<div><img src="https://www.fastmailusercontent.com/proxy/f35d27a0eb3c788e6d1dd3cd5ba667a0938e79118c29982ba2c548e34dcb9ccb/8647470737a3f2f2777777e266163747d61696c65737562736f6e64756e647e236f6d6f20727f68797f273131366335673269393037383132363266656565316662633135303636326732356536326135316537323930363932663136313232326266693839336363393f2836343734373037333731633662366235373233303330333233343331333033356233363437356233373536356634363736323739363436356235663536343736623737363636623666303735363566366335373037356634633134383736353137363738363366373331373136313431673462323336343534323330333435323732373736356434353933393434623233323431353836333336363837343333373333363531643462323336343037353537333236353534333266333736373936366438333333353636333236363739373837363733343333346434343433353730333462323332343336383337353737353737353736323534333335346232333234373430333933316737343464366639333433346232333634333538333437343735373666313735333666343531333564363332343464353332663537336431353636346232333634383437373334366432333237336639343935323331373035373538353834393731653466363438363733383336373435343732353334316631363837363636373165303734363366326434363536303332663462323336343535323431663364316630373466343437353636383631373436393730353935336436333235333339363462323336343666323432333833366436373437373337353137363538333936313730333464333537363934383339373836393639353734353638373566373434343333343736333734323437333134313734333935383634623233323437363462333334343462333334343f2f60756e6/open" alt="" width="1" height="1" border="0" style="min-height:1px!important;width:1px!important;border-top-width:0px!important;border-right-width:0px!important;border-bottom-width:0px!important;border-left-width:0px!important;margin-top:0px!important;margin-bottom:0px!important;margin-right:0px!important;margin-left:0px!important;padding-top:0px!important;padding-bottom:0px!important;padding-right:0px!important;padding-left:0px!important"><br></div>
<div><u>_______________________________________________</u><br></div>
<div>swift-evolution mailing list<br></div>
<div><a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br></div>
<div><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br></div>
</blockquote><div> </div>
<div><img style="min-height:1px!important;width:1px!important;border-top-width:0px!important;border-right-width:0px!important;border-bottom-width:0px!important;border-left-width:0px!important;margin-top:0px!important;margin-bottom:0px!important;margin-right:0px!important;margin-left:0px!important;padding-top:0px!important;padding-bottom:0px!important;padding-right:0px!important;padding-left:0px!important" border="0" height="1" width="1" alt="" src="https://www.fastmailusercontent.com/proxy/519169f6e69619c9467e20245cfa3bf12ae7f51b68950b26bbde57f563de4e0b/8647470737a3f2f25723030323431303e23647e23756e64676279646e2e65647f27766f2f60756e6f35707e6d315f4a6d223648575d477274774868446b60316f6d22364951795051794643585254503447473355616d22324343687a4e425c6967537d43486c45705d2236416d67643879576e47643a5b6b46445d6437763375617d61664146485e403a5937577d4463497465525f4659555872623a76715d2236484746384736757d2232415566567975656933564a42554a7e415b6d22324538336053425d4847744673507467307764603e6d64444c66367a4a777a6971434d223647714153713d223646573034454836445258703d425a7f66313662303332426963555c6a52444a557a767f664a7454464839733b444162644d223240567774345d615c664f6555337d23344/open"><br></div>
</div>
<div> </div>
<div>_______________________________________________<br></div>
<div>
swift-evolution mailing list<br></div>
<div> <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br></div>
<div> <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br></div>
<div> </div>
</blockquote></div>
</div>
</div>
</blockquote><div> </div>
</div></div></div>

</blockquote></div><br></div></div>