<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><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't seem like a great idea. What do you think of the ... suffix? That can't conflict with operators, and it matches the variadic function declaration.<br></div>
<div>&nbsp;</div>
<div>-Kevin<br></div>
<div>&nbsp;</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.&nbsp;<br></div>
<div>&nbsp;</div>
<div>The reason this doesn't work is due to Swift'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 "Any...", 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>&nbsp;</div>
<div>As for the choice of operator, I'm open to suggestions. I wanted to use one that was familiar to other developers, so I chose the one that Ruby uses.&nbsp;<br></div>
<div>&nbsp;</div>
<div>Maybe a ~ would be better, or a keyword like @variadic?<br></div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div><div><div><div dir="ltr"><div><div dir="ltr"><div style="color:rgb(0, 0, 0);font-family:helvetica, arial;"><span class="colour" style="color:rgb(34, 34, 34)"><span class="font" style="font-family:arial, sans-serif">Best,</span></span><br></div>
<div style="color:rgb(0, 0, 0);font-family:helvetica, arial;">&nbsp;</div>
<div style="color:rgb(0, 0, 0);font-family:helvetica, arial;"><span class="colour" style="color:rgb(34, 34, 34)"><span class="font" style="font-family:arial, sans-serif">Arthur /&nbsp;<a href="http://sabintsev.com/">Sabintsev.com</a></span></span><br></div>
</div>
</div>
</div>
</div>
</div>
<div>&nbsp;</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">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't use * as suggested, because that conflicts with * as a prefix operator.<br></div>
<div>&nbsp;</div>
<div>You could probably get away with using a trailing ... in the call, as in<br></div>
<div>&nbsp;</div>
<div>func foo(xs: [Int]...) {<br></div>
<div>&nbsp; &nbsp; bar(xs...)<br></div>
<div>}<br></div>
<div>&nbsp;</div>
<div>I also wonder whether there's a reason Swift doesn't already support this. Maybe there's some desired future change to variadic arguments to improve performance (i.e. to avoid having to allocate an array) that wouldn't be compatible? Although I'm not sure what that would be. Maybe there's actually no barrier at all and it was just something that wasn't prioritized. It would be good to know either way.<br></div>
<div>&nbsp;</div>
<div>-Kevin<br></div>
<div><div><div>&nbsp;</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;">&nbsp;</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).&nbsp;<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;">&nbsp;</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:&nbsp;<a href="https://github.com/ArtSabintsev/swift-evolution/blob/master/proposals/array-variadic-function.md">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:&nbsp;<a href="https://github.com/apple/swift-evolution/pull/52">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:&nbsp;<a href="https://bugs.swift.org/browse/SR-128">https://bugs.swift.org/browse/SR-128</a>&nbsp;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;">&nbsp;</div>
<div>&nbsp;</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;">&nbsp;</div>
<div><span class="colour" style="color:rgb(34, 34, 34)"><span class="font" style="font-family:arial, sans-serif">Arthur /&nbsp;<a href="http://sabintsev.com">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">swift-evolution@swift.org</a><br></div>
<div><a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br></div>
</blockquote><div>&nbsp;</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>&nbsp;</div>
<div>_______________________________________________<br></div>
<div>
swift-evolution mailing list<br></div>
<div> <a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br></div>
<div> <a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br></div>
<div>&nbsp;</div>
</blockquote></div>
</div>
</div>
</blockquote><div>&nbsp;</div>
</body>
</html>