<html><head><style>
body {
        font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
        padding:1em;
        margin:auto;
        background:#fefefe;
}

h1, h2, h3, h4, h5, h6 {
        font-weight: bold;
}

h1 {
        color: #000000;
        font-size: 28pt;
}

h2 {
        border-bottom: 1px solid #CCCCCC;
        color: #000000;
        font-size: 24px;
}

h3 {
        font-size: 18px;
}

h4 {
        font-size: 16px;
}

h5 {
        font-size: 14px;
}

h6 {
        color: #777777;
        background-color: inherit;
        font-size: 14px;
}

hr {
        height: 0.2em;
        border: 0;
        color: #CCCCCC;
        background-color: #CCCCCC;
    display: inherit;
}

p, blockquote, ul, ol, dl, li, table, pre {
        margin: 15px 0;
}

a, a:visited {
        color: #4183C4;
        background-color: inherit;
        text-decoration: none;
}

#message {
        border-radius: 6px;
        border: 1px solid #ccc;
        display:block;
        width:100%;
        height:60px;
        margin:6px 0px;
}

button, #ws {
        font-size: 12 pt;
        padding: 4px 6px;
        border-radius: 5px;
        border: 1px solid #bbb;
        background-color: #eee;
}

code, pre, #ws, #message {
        font-family: Monaco;
        font-size: 10pt;
        border-radius: 3px;
        background-color: #F8F8F8;
        color: inherit;
}

code {
        border: 1px solid #EAEAEA;
        margin: 0 2px;
        padding: 0 5px;
}

pre {
        border: 1px solid #CCCCCC;
        overflow: auto;
        padding: 4px 8px;
}

pre > code {
        border: 0;
        margin: 0;
        padding: 0;
}

#ws { background-color: #f8f8f8; }


.bloop_markdown table {
border-collapse: collapse;  
font-family: Helvetica, arial, freesans, clean, sans-serif;  
color: rgb(51, 51, 51);  
font-size: 15px; line-height: 25px;
padding: 0; }

.bloop_markdown table tr {
border-top: 1px solid #cccccc;
background-color: white;
margin: 0;
padding: 0; }
     
.bloop_markdown table tr:nth-child(2n) {
background-color: #f8f8f8; }

.bloop_markdown table tr th {
font-weight: bold;
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }

.bloop_markdown table tr td {
border: 1px solid #cccccc;
margin: 0;
padding: 6px 13px; }

.bloop_markdown table tr th :first-child, table tr td :first-child {
margin-top: 0; }

.bloop_markdown table tr th :last-child, table tr td :last-child {
margin-bottom: 0; }

.bloop_markdown blockquote{
  border-left: 4px solid #dddddd;
  padding: 0 15px;
  color: #777777; }
  blockquote > :first-child {
    margin-top: 0; }
  blockquote > :last-child {
    margin-bottom: 0; }

code, pre, #ws, #message {
    word-break: normal;
    word-wrap: normal;
}

hr {
    display: inherit;
}

.bloop_markdown :first-child {
    -webkit-margin-before: 0;
}

code, pre, #ws, #message {
    font-family: Menlo, Consolas, Liberation Mono, Courier, monospace;
}


.send { color:#77bb77; }
.server { color:#7799bb; }
.error { color:#AA0000; }</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class="bloop_markdown"><blockquote>
<p><br></p></blockquote></div><div class="bloop_original_html"> Answer inlined:<br><p class="airmail_on">Am 7. Juni 2017 um 12:33:51, Gwendal Roué (<a href="mailto:gwendal.roue@gmail.com">gwendal.roue@gmail.com</a>) schrieb:</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><blockquote type="cite" class=""><div class=""><br class="Apple-interchange-newline">Le 7 juin 2017 à 12:03, Adrian Zubarev via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; a écrit :</div><br class="Apple-interchange-newline"><div class=""><p class="" style="margin: 15px 0px; -webkit-margin-before: 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; -webkit-text-stroke-width: 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; -webkit-text-stroke-width: 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; -webkit-margin-before: 0px;"><span class="Apple-converted-space">&nbsp;</span>let fn2: ((Int, Int)) -&gt; Void = { lhs, rhs in }<span class="Apple-converted-space">&nbsp;</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; -webkit-text-stroke-width: 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; -webkit-text-stroke-width: 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; -webkit-margin-before: 0px;">let fn2: ((Int, Int)) -&gt; 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.<span class="Apple-converted-space">&nbsp;</span></div></div></div></div></div></div></span></blockquote></div><p>Well it’s clearly not the ideal solution from a visual perspective but it’s an unambiguous one. If tuples were represented differently, let’s say `@(a, b)` we wouldn’t sit here and debate that long because it becomes crystal clear what should be possible and what not.</p><p><br></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 class=""><div class=""><div class=""><div class="">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; color: rgb(0, 0, 0);">&nbsp; &nbsp;&nbsp;</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;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">func</span><span class="Apple-converted-space">&nbsp;</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">&nbsp;</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">&nbsp;</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;">) -&gt;</span><span class="Apple-converted-space">&nbsp;</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;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f1</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ lhs, rhs</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space">&nbsp;</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;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f1</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ (lhs, rhs)</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">lhs + rhs }</span></div></div></div></div></div></div></div></span></blockquote></div><p>Next one is a bug to me:</p><div><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 class=""><div class=""><div class=""><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;"><br class="Apple-interchange-newline">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f1</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ tuple</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">tuple.0 + tuple.1 }</span></div></div></div></div></div></div></div></span></blockquote></div><p>Fine:</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=""><div class=""><div class=""><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;"><br class="Apple-interchange-newline">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</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><p 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;">&nbsp;&nbsp; &nbsp;</span><br class="webkit-block-placeholder"></p><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; color: rgb(0, 0, 0);">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">// two arguments, with documentation names</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;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">func</span><span class="Apple-converted-space">&nbsp;</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">&nbsp;</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">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">a:</span><span class="Apple-converted-space">&nbsp;</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">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">_</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">b:</span><span class="Apple-converted-space">&nbsp;</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;">) -&gt;</span><span class="Apple-converted-space">&nbsp;</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;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f2</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ lhs, rhs</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space">&nbsp;</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;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f2</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ (lhs, rhs)</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">lhs + rhs }</span></div></div></div></div></div></div></div></span></blockquote></div></div><p>Another bug to me:</p><div><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 class=""><div class=""><div class=""><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;"><br class="Apple-interchange-newline">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f2</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ tuple</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">tuple.0 + tuple.1 }</span></div></div></div></div></div></div></div></span></blockquote></div><p>Fine:</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=""><div class=""><div class=""><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;"><br class="Apple-interchange-newline">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</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><p 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;">&nbsp;&nbsp; &nbsp;</span><br class="webkit-block-placeholder"></p><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; color: rgb(0, 0, 0);">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</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;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">func</span><span class="Apple-converted-space">&nbsp;</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">&nbsp;</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">&nbsp;</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;">)) -&gt;</span><span class="Apple-converted-space">&nbsp;</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></span></blockquote></div></div><p>Should be `((lhs, rhs)) in` which eliminates both of the next two scenarios completely:</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 class=""><div class=""><div class=""><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;"><br class="Apple-interchange-newline">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f3</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ lhs, rhs</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space">&nbsp;</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;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f3</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ (lhs, rhs)</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">lhs + rhs }</span></div></div></div></div></div></div></div></span></blockquote></div><p>Fine:</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 class=""><div class=""><div class=""><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;"><br class="Apple-interchange-newline">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f3</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ tuple</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">tuple.0 + tuple.1 }</span></div></div></div></div></div></div></div></span></blockquote></div><p>Should be an error:</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 class=""><div class=""><div class=""><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;"><br class="Apple-interchange-newline">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</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></div></div></div></div></div></span></blockquote></div><p>See `f3`</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=""><div class=""><div class=""><div class=""><p 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;"><br class="Apple-interchange-newline">&nbsp;&nbsp; &nbsp;</span><br class="webkit-block-placeholder"></p><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; color: rgb(0, 0, 0);">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</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;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">func</span><span class="Apple-converted-space">&nbsp;</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">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">closure: ((a:</span><span class="Apple-converted-space">&nbsp;</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">&nbsp;</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;">)) -&gt;</span><span class="Apple-converted-space">&nbsp;</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;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f4</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ lhs, rhs</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space">&nbsp;</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;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f4</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ (lhs, rhs)</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space">&nbsp;</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;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f4</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ tuple</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(129, 53, 160);">in</span><span class="Apple-converted-space">&nbsp;</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;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</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=""><span class="" style="font-variant-ligatures: no-common-ligatures;"><br class=""></span></div></div><div class="">This covers the Swift 3 regressions developped by Stephen Celis and I, unless I have missed any. And this should be the goal of the designers of this language, *regardless of the actual types*. Developers are olding their breath: please just make this happen.</div><div class=""><br class=""></div><div class="">Now Swift 3 may have an issue with $n parameters. Here is my suggestion, should `((Int, Int)) -&gt; Int` be different from `(Int, Int) -&gt; Int`:</div><div class=""><br class=""></div></div></div></div></div></div></span></blockquote><div><br></div><div>That’s what I would expect.</div><br><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=""><div class=""><div class=""><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;">&nbsp; &nbsp;&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f1</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ $0 + $1 }</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 143, 0);">// OK</span></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; color: rgb(0, 0, 0);">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f1</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);">{ $0.0 + $0.1 }</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">// OK in Swift 3, compiler error in Swift 4?</span></div><p 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;">&nbsp;&nbsp; &nbsp;</span><br class="webkit-block-placeholder"></p><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f2</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ $0 + $1 }</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 143, 0);">// OK</span></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; color: rgb(0, 0, 0);">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f2</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);">{ $0.0 + $0.1 }</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">// OK in Swift 3, compiler error in Swift 4?</span></div><p 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;">&nbsp;&nbsp; &nbsp;</span><br class="webkit-block-placeholder"></p><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; color: rgb(0, 0, 0);">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f3</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);">{ $0 + $1 }</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">// OK in Swift 3, compiler error in Swift 4?</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;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f3</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ $0.0 + $0.1 }</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 143, 0);">// OK</span></div><p 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;">&nbsp;&nbsp; &nbsp;</span><br class="webkit-block-placeholder"></p><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; color: rgb(0, 0, 0);">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f4</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);">{ $0 + $1 }</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">// OK in Swift 3, compiler error in Swift 4?</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;">&nbsp; &nbsp;</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(32, 128, 159);">f4</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures;">{ $0.a + $0.b }</span><span class="Apple-converted-space">&nbsp;</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 143, 0);">// OK</span></div><div class=""><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 143, 0);"><br class=""></span></div></div><div class="">Gwendal Roué</div><div class=""><br class=""></div></div></div></div></div></div></span></blockquote><br class="Apple-interchange-newline"></div>These rules should as strict as they possible can be now. Later on we can add sugar to relax some of them. Here is a quote, again from Chris Lattner:</div><div><br></div><div class="bloop_markdown"><blockquote><p>The art of evolving Swift forward is to carefully pick and choose areas to focus on, both because we want to ensure a coherent language, but also because implementor bandwidth is limited.</p><p>Beyond that, though syntactic sugar is always motivated by strong rationale and use-cases, in my opinion, it is the most dangerous kind of additive feature to consider at this point of Swift’s evolution. While these features are useful, they also clearly add complexity to the language, and it is difficult to gauge whether the problem being addressed will even exist in Swift as the other bigger features come in (for example, a macro system). These features can also make future language evolution more problematic because they consume syntactic real estate in the language.</p><p>If you’re into analogies, I see features like the generics improvements, ownership model, concurrency model, macro system, new frameworks, and other large scale efforts as the “bricks" that make up the house of Swift. In that analogy, syntactic sugar proposals are “mortar” that fills in the cracks between the bricks. If we add too much mortar too early on, we run the risk of the house of Swift being built out of mortar, or of not being able to fit the bricks into the right places. That would be very bad, given that we all want the house of Swift to be strong and beautiful over the long term.</p><p>-Chris&nbsp;</p></blockquote></div></div></div></div></div></div></div><div class="bloop_markdown"><p></p></div><style>body{font-family:Helvetica,Arial;font-size:13px}</style></body></html>