<div>On Wed, Jun 7, 2017 at 06:18 Gwendal Roué &lt;<a href="mailto:gwendal.roue@gmail.com">gwendal.roue@gmail.com</a>&gt; wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Xiaodi, Adrian, you are actively pushing so that something that was allowed, well compiled (no runtime issue), and covered actual uses cases, becomes forbidden.</div></div></blockquote><div><br></div><div>To be clear, I’m not pushing to forbid anything at all. SE-0110 prohibited this a long time ago.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div> Without any developer advantage that would somehow balance the change.</div><div><br></div><div>That&#39;s called a regression.</div><div><br></div><div>And what&#39;s the rationale, already?</div></div></blockquote><div><br></div><div>Surely, the time to ask that question was during review of SE-0110. Today’s question is: how do we improve the user experience given that tuples and argument lists are now distinct? Is your starting point that you reject that conclusion altogether? If so, we’re simply having distinct discussions.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>A sense of compiler aesthetics? Since when a sense of compiler aesthetics is more valuable than a sense of code aesthetics? Aren&#39;t both supposed to walk together as a pair?</div><div><br></div><div></div></div><div style="word-wrap:break-word"><div><div>Gwendal</div></div></div><div style="word-wrap:break-word"><div><div><br><div><blockquote type="cite"><div>Le 7 juin 2017 à 12:54, Xiaodi Wu &lt;<a href="mailto:xiaodi.wu@gmail.com" target="_blank">xiaodi.wu@gmail.com</a>&gt; a écrit :</div><br class="m_572448319633751264Apple-interchange-newline"><div>IMO, if tuples and argument lists are to be distinguished in any way, it is imperative that f3(+) and f4(+), and some of your other examples, _not_ work.<br><br>After all, if a tuple is not an argument list, it should possible to have a function of type ((Int, Int)) -&gt; Int and a function of type (Int, Int) -&gt; Int share the same name (IIUC, it’s a known bug that this does not currently work). Quite simply, there’s a type mismatch if you pass sum1 to f3–what happens if there’s a distinct, overloaded sum1 that takes a single tuple?<br><br>Chris’s suggestion restores a syntactic convenience without touching the type system. What you are arguing for is essentially making ((Int, Int)) -&gt; Int and (Int, Int) -&gt; Int synonymous again, either in some or in all contexts.<br><br><br><div class="gmail_quote"><div>On Wed, Jun 7, 2017 at 05:41 Gwendal Roué via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><blockquote type="cite"><div>Le 7 juin 2017 à 12:33, Gwendal Roué &lt;<a href="mailto:gwendal.roue@gmail.com" target="_blank">gwendal.roue@gmail.com</a>&gt; a écrit :</div><br class="m_572448319633751264m_1801710330914298896Apple-interchange-newline"><div><div style="word-wrap:break-word"><br><div><blockquote type="cite"><div>Le 7 juin 2017 à 12:03, Adrian Zubarev via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; a écrit :</div><br class="m_572448319633751264m_1801710330914298896Apple-interchange-newline"><div><p style="margin:15px 0px;font-family:Helvetica,Arial;font-size:13px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">Well please no:</p><p style="margin:15px 0px;font-family:Helvetica,Arial;font-size:13px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><code style="font-family:Menlo,Consolas,&#39;Liberation Mono&#39;,Courier,monospace;font-size:10pt;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;background-color:rgb(248,248,248);color:inherit;border:1px solid rgb(234,234,234);margin:0px 2px;padding:0px 5px;word-break:normal;word-wrap:normal"><span class="m_572448319633751264m_1801710330914298896Apple-converted-space"> </span>let fn2: ((Int, Int)) -&gt; Void = { lhs, rhs in }<span class="m_572448319633751264m_1801710330914298896Apple-converted-space"> </span></code></p><p style="margin:15px 0px;font-family:Helvetica,Arial;font-size:13px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">Instead use destructuring sugar pitched by Chris Lattner on the other thread:</p><p style="margin:15px 0px;font-family:Helvetica,Arial;font-size:13px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><code style="font-family:Menlo,Consolas,&#39;Liberation Mono&#39;,Courier,monospace;font-size:10pt;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;background-color:rgb(248,248,248);color:inherit;border:1px solid rgb(234,234,234);margin:0px 2px;padding:0px 5px;word-break:normal;word-wrap:normal">let fn2: ((Int, Int)) -&gt; Void = { ((lhs, rhs)) in }</code></p></div></blockquote></div><br><div><div><div><div>Despite Chris Lattern being a semi-god, his double-parenthesis suggestion cruelly lacks in terms of user ergonomics. The compiler should be able to deal with the following code snippet, just like Swift 3 does:</div><div><br></div><div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,143,0)"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures">// two arguments</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">func</span><span style="font-variant-ligatures:no-common-ligatures"> f1(</span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">_</span><span style="font-variant-ligatures:no-common-ligatures"> closure: (</span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">, </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">) -&gt; </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">) { closure(1, 2) }</span></div></div></div></div></div></div></div></blockquote></div></div><div style="word-wrap:break-word"><div><blockquote type="cite">[...]</blockquote><br></div><div>Here is the full extent of the remarquable Swift 3 ergonomics. This full snippet compiles in Swift 3:</div><div><br></div><div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">func</span><span style="font-variant-ligatures:no-common-ligatures"> sum1(</span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">_</span><span style="font-variant-ligatures:no-common-ligatures"> lhs: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">, </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">_</span><span style="font-variant-ligatures:no-common-ligatures"> rhs: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">) -&gt; </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures"> { </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">return</span><span style="font-variant-ligatures:no-common-ligatures"> lhs + rhs }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">func</span><span style="font-variant-ligatures:no-common-ligatures"> sum2(lhs: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">, rhs: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">) -&gt; </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures"> { </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">return</span><span style="font-variant-ligatures:no-common-ligatures"> lhs + rhs }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">func</span><span style="font-variant-ligatures:no-common-ligatures"> sum3(tuple: (</span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">, </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">)) -&gt; </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures"> { </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">return</span><span style="font-variant-ligatures:no-common-ligatures"> tuple.0 + tuple.1 }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">func</span><span style="font-variant-ligatures:no-common-ligatures"> sum4(tuple: (lhs: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">, rhs: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">)) -&gt; </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures"> { </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">return</span><span style="font-variant-ligatures:no-common-ligatures"> tuple.lhs + tuple.rhs }</span></div></div></div><div style="word-wrap:break-word"><div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;min-height:13px"><span style="font-variant-ligatures:no-common-ligatures"></span><br></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,143,0)"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures">// two arguments</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">func</span><span style="font-variant-ligatures:no-common-ligatures"> f1(</span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">_</span><span style="font-variant-ligatures:no-common-ligatures"> closure: (</span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">, </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">) -&gt; </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">) { closure(1, 2) }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f1</span><span style="font-variant-ligatures:no-common-ligatures"> { lhs, rhs </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> lhs + rhs }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f1</span><span style="font-variant-ligatures:no-common-ligatures"> { (lhs, rhs) </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> lhs + rhs }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f1</span><span style="font-variant-ligatures:no-common-ligatures"> { tuple </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> tuple.0 + tuple.1 }</span></div></div></div><div style="word-wrap:break-word"><div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f1</span><span style="font-variant-ligatures:no-common-ligatures"> { (tuple) </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> tuple.0 + tuple.1 }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f1</span><span style="font-variant-ligatures:no-common-ligatures">(+)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f1(sum1)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f1(sum2)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f1(sum3)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f1(sum4)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;min-height:13px"><span style="font-variant-ligatures:no-common-ligatures">    </span><br class="m_572448319633751264m_1801710330914298896webkit-block-placeholder"></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,143,0)"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures">// two arguments, with documentation names: identical</span></div></div></div><div style="word-wrap:break-word"><div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">func</span><span style="font-variant-ligatures:no-common-ligatures"> f2(</span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">_</span><span style="font-variant-ligatures:no-common-ligatures"> closure: (</span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">_</span><span style="font-variant-ligatures:no-common-ligatures"> a: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">, </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">_</span><span style="font-variant-ligatures:no-common-ligatures"> b: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">) -&gt; </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">) { closure(1, 2) }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f2</span><span style="font-variant-ligatures:no-common-ligatures"> { lhs, rhs </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> lhs + rhs }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f2</span><span style="font-variant-ligatures:no-common-ligatures"> { (lhs, rhs) </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> lhs + rhs }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f2</span><span style="font-variant-ligatures:no-common-ligatures"> { tuple </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> tuple.0 + tuple.1 }</span></div></div></div><div style="word-wrap:break-word"><div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f2</span><span style="font-variant-ligatures:no-common-ligatures"> { (tuple) </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> tuple.0 + tuple.1 }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f2</span><span style="font-variant-ligatures:no-common-ligatures">(+)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f2(sum1)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f2(sum2)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f2(sum3)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f2(sum4)</span></div></div></div><div style="word-wrap:break-word"><div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;min-height:13px"><span style="font-variant-ligatures:no-common-ligatures">    </span><br class="m_572448319633751264m_1801710330914298896webkit-block-placeholder"></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,143,0)"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures">// one tuple argument</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">func</span><span style="font-variant-ligatures:no-common-ligatures"> f3(</span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">_</span><span style="font-variant-ligatures:no-common-ligatures"> closure: ((</span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">, </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">)) -&gt; </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">) { closure((1, 2)) }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f3</span><span style="font-variant-ligatures:no-common-ligatures"> { lhs, rhs </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> lhs + rhs }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f3</span><span style="font-variant-ligatures:no-common-ligatures"> { (lhs, rhs) </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> lhs + rhs }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f3</span><span style="font-variant-ligatures:no-common-ligatures"> { tuple </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> tuple.0 + tuple.1 }</span></div></div></div><div style="word-wrap:break-word"><div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f3</span><span style="font-variant-ligatures:no-common-ligatures"> { (tuple) </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> tuple.0 + tuple.1 }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f3</span><span style="font-variant-ligatures:no-common-ligatures">(+)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f3(sum1)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f3(sum2)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f3(sum3)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f3(sum4)</span></div></div></div><div style="word-wrap:break-word"><div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;min-height:13px"><span style="font-variant-ligatures:no-common-ligatures">    </span><br class="m_572448319633751264m_1801710330914298896webkit-block-placeholder"></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,143,0)"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures">// one keyed tuple argument</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">func</span><span style="font-variant-ligatures:no-common-ligatures"> f4(</span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">_</span><span style="font-variant-ligatures:no-common-ligatures"> closure: ((a: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">, b: </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">)) -&gt; </span><span style="font-variant-ligatures:no-common-ligatures;color:#3c59a7">Int</span><span style="font-variant-ligatures:no-common-ligatures">) { closure((a: 1, b: 2)) }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f4</span><span style="font-variant-ligatures:no-common-ligatures"> { lhs, rhs </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> lhs + rhs }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f4</span><span style="font-variant-ligatures:no-common-ligatures"> { (lhs, rhs) </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> lhs + rhs }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f4</span><span style="font-variant-ligatures:no-common-ligatures"> { tuple </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> tuple.a + tuple.b }</span></div></div></div><div style="word-wrap:break-word"><div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f4</span><span style="font-variant-ligatures:no-common-ligatures"> { (tuple) </span><span style="font-variant-ligatures:no-common-ligatures;color:#8135a0">in</span><span style="font-variant-ligatures:no-common-ligatures"> tuple.a + tuple.b }</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    </span><span style="font-variant-ligatures:no-common-ligatures;color:#20809f">f4</span><span style="font-variant-ligatures:no-common-ligatures">(+)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f4(sum1)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f4(sum2)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f4(sum3)</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo"><span style="font-variant-ligatures:no-common-ligatures">    f4(sum4)</span></div><div><span style="font-variant-ligatures:no-common-ligatures"><br></span></div></div></div><div style="word-wrap:break-word">Gwendal<div><br></div></div>_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">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>
</blockquote></div>
</div></blockquote></div><br></div></div></div></blockquote></div></div>