<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div> <br> <div id="bloop_sign_1496834841921757952" class="bloop_sign"><div style="font-family:helvetica,arial;font-size:13px">-- <br>Adrian Zubarev<br>Sent with Airmail</div></div> <br><p class="airmail_on">Am 7. Juni 2017 um 13:18:22, Gwendal Roué (<a href="mailto:gwendal.roue@gmail.com">gwendal.roue@gmail.com</a>) schrieb:</p> <div><div><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div></div><div><div class="">Xiaodi, Adrian, you are actively pushing so that something that was allowed, well compiled (no runtime issue), and covered actual uses cases, becomes forbidden. Without any developer advantage that would somehow balance the change.</div><div class=""><br class=""></div><div class="">That's called a regression.</div></div></div></span></blockquote></div><div><br class="Apple-interchange-newline"></div></div><p style="margin: 0px; font-size: 11px; line-height: normal; font-family: 'Fira Code';"><span style="font-variant-ligatures: no-common-ligatures;">func</span><span style="font-variant-ligatures: no-common-ligatures;"> foo(</span><span style="font-variant-ligatures: no-common-ligatures;">_</span><span style="font-variant-ligatures: no-common-ligatures;">: (</span><span style="font-variant-ligatures: no-common-ligatures;">Int</span><span style="font-variant-ligatures: no-common-ligatures;">, </span><span style="font-variant-ligatures: no-common-ligatures;">Int</span><span style="font-variant-ligatures: no-common-ligatures;">)) {}</span></p><p style="margin: 0px; font-size: 11px; line-height: normal; font-family: 'Fira Code';"><span style="font-variant-ligatures: no-common-ligatures;">func</span><span style="font-variant-ligatures: no-common-ligatures"> bar(</span><span style="font-variant-ligatures: no-common-ligatures;">_</span><span style="font-variant-ligatures: no-common-ligatures">: </span><span style="font-variant-ligatures: no-common-ligatures;">Int</span><span style="font-variant-ligatures: no-common-ligatures">, </span><span style="font-variant-ligatures: no-common-ligatures;">_</span><span style="font-variant-ligatures: no-common-ligatures">: </span><span style="font-variant-ligatures: no-common-ligatures;">Int</span><span style="font-variant-ligatures: no-common-ligatures">) {}</span></p><p>
</p><p style="margin: 0px; font-size: 11px; line-height: normal; font-family: 'Fira Code';"><span style="font-variant-ligatures: no-common-ligatures;">type(of: foo) == type(of: bar) </span><span style="font-variant-ligatures: no-common-ligatures;">//=> true - It's a BUG!</span></p><div><blockquote type="cite" class="clean_bq" style="font-family: Helvetica, Arial; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div><div class=""><br class="Apple-interchange-newline"><br class=""></div><div class="">And what's the rationale, already? A sense of compiler aesthetics? Since when a sense of compiler aesthetics is more valuable than a sense of code aesthetics? Aren't both supposed to walk together as a pair?</div><div class=""><br class=""></div><div class=""><div class="">Gwendal</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">Le 7 juin 2017 à 12:54, Xiaodi Wu <<a href="mailto:xiaodi.wu@gmail.com" class="">xiaodi.wu@gmail.com</a>> a écrit :</div><br class="Apple-interchange-newline"><div class="">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 class=""><br class="">After all, if a tuple is not an argument list, it should possible to have a function of type ((Int, Int)) -> Int and a function of type (Int, Int) -> 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 class=""><br class="">Chris’s suggestion restores a syntactic convenience without touching the type system. What you are arguing for is essentially making ((Int, Int)) -> Int and (Int, Int) -> Int synonymous again, either in some or in all contexts.<br class=""><br class=""><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Wed, Jun 7, 2017 at 05:41 Gwendal Roué via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div class="" style="word-wrap: break-word;"><div class=""><blockquote type="cite" class=""><div class="">Le 7 juin 2017 à 12:33, Gwendal Roué <<a href="mailto:gwendal.roue@gmail.com" target="_blank" class="">gwendal.roue@gmail.com</a>> a écrit :</div><br class="m_1801710330914298896Apple-interchange-newline"><div class=""><div class="" style="word-wrap: break-word;"><br class=""><div class=""><blockquote type="cite" class=""><div class="">Le 7 juin 2017 à 12:03, Adrian Zubarev via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>> a écrit :</div><br class="m_1801710330914298896Apple-interchange-newline"><div class=""><p class="" 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 class="" 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 class="" style="font-family: Menlo, Consolas, 'Liberation Mono', 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_1801710330914298896Apple-converted-space"> </span>let fn2: ((Int, Int)) -> Void = { lhs, rhs in }<span class="m_1801710330914298896Apple-converted-space"> </span></code></p><p class="" 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 class="" 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 class="" style="font-family: Menlo, Consolas, 'Liberation Mono', 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)) -> Void = { ((lhs, rhs)) in }</code></p></div></blockquote></div><br class=""><div class=""><div class=""><div class=""><div class="">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 class=""><br class=""></div><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 143, 0);"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">// two arguments</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">func</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">f1(</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">_</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">closure: (</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">,</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">) -></span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">) { closure(1, 2) }</span></div></div></div></div></div></div></div></blockquote></div></div><div class="" style="word-wrap: break-word;"><div class=""><blockquote type="cite" class="">[...]</blockquote><br class=""></div><div class="">Here is the full extent of the remarquable Swift 3 ergonomics. This full snippet compiles in Swift 3:</div><div class=""><br class=""></div><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">func</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">sum1(</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">_</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">lhs:</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">,</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">_</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">rhs:</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">) -></span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">return</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">lhs + rhs }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">func</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">sum2(lhs:</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">, rhs:</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">) -></span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">return</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">lhs + rhs }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">func</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">sum3(tuple: (</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">,</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">)) -></span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">return</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">tuple.0 + tuple.1 }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">func</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">sum4(tuple: (lhs:</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">, rhs:</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">)) -></span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">return</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">tuple.lhs + tuple.rhs }</span></div></div></div><div class="" style="word-wrap: break-word;"><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 143, 0);"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">// two arguments</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">func</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">f1(</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">_</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">closure: (</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">,</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">) -></span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">) { closure(1, 2) }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f1</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ lhs, rhs</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">lhs + rhs }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f1</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ (lhs, rhs)</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">lhs + rhs }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f1</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ tuple</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">tuple.0 + tuple.1 }</span></div></div></div><div class="" style="word-wrap: break-word;"><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f1</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ (tuple)</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">tuple.0 + tuple.1 }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f1</span><span class="" style="font-variant-ligatures: no-common-ligatures;">(+)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f1(sum1)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f1(sum2)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f1(sum3)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f1(sum4)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><br class="m_1801710330914298896webkit-block-placeholder"></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 143, 0);"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">// two arguments, with documentation names: identical</span></div></div></div><div class="" style="word-wrap: break-word;"><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">func</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">f2(</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">_</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">closure: (</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">_</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">a:</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">,</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">_</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">b:</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">) -></span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">) { closure(1, 2) }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f2</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ lhs, rhs</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">lhs + rhs }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f2</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ (lhs, rhs)</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">lhs + rhs }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f2</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ tuple</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">tuple.0 + tuple.1 }</span></div></div></div><div class="" style="word-wrap: break-word;"><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f2</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ (tuple)</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">tuple.0 + tuple.1 }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f2</span><span class="" style="font-variant-ligatures: no-common-ligatures;">(+)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f2(sum1)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f2(sum2)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f2(sum3)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f2(sum4)</span></div></div></div><div class="" style="word-wrap: break-word;"><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><br class="m_1801710330914298896webkit-block-placeholder"></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 143, 0);"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">// one tuple argument</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">func</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">f3(</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">_</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">closure: ((</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">,</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">)) -></span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">) { closure((1, 2)) }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f3</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ lhs, rhs</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">lhs + rhs }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f3</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ (lhs, rhs)</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">lhs + rhs }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f3</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ tuple</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">tuple.0 + tuple.1 }</span></div></div></div><div class="" style="word-wrap: break-word;"><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f3</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ (tuple)</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">tuple.0 + tuple.1 }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f3</span><span class="" style="font-variant-ligatures: no-common-ligatures;">(+)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f3(sum1)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f3(sum2)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f3(sum3)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f3(sum4)</span></div></div></div><div class="" style="word-wrap: break-word;"><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; min-height: 13px;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><br class="m_1801710330914298896webkit-block-placeholder"></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 143, 0);"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">// one keyed tuple argument</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">func</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">f4(</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">_</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">closure: ((a:</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">, b:</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">)) -></span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(60, 89, 167);">Int</span><span class="" style="font-variant-ligatures: no-common-ligatures;">) { closure((a: 1, b: 2)) }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f4</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ lhs, rhs</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">lhs + rhs }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f4</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ (lhs, rhs)</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">lhs + rhs }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f4</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ tuple</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">tuple.a + tuple.b }</span></div></div></div><div class="" style="word-wrap: break-word;"><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f4</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ (tuple)</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures;">tuple.a + tuple.b }</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="Apple-converted-space"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f4</span><span class="" style="font-variant-ligatures: no-common-ligatures;">(+)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f4(sum1)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f4(sum2)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f4(sum3)</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> f4(sum4)</span></div><div class=""><span class="" style="font-variant-ligatures: no-common-ligatures;"><br class=""></span></div></div></div><div class="" style="word-wrap: break-word;">Gwendal<div class=""><br class=""></div></div>_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto: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=""></blockquote></div></div></blockquote></div><br class=""></div></div></div></div></span></blockquote><br class="Apple-interchange-newline"></div></body></html>