Now I'm confused. The ordinary meaning of the word "shuffle" is not changing but rather reordering, and all of your examples are of reordering.<br><br>To be clear, are you proposing the prohibition of *adding or removing* labels as well? A previous discussion on tuple shuffling on this list saw consensus that assigning a value of type (label1: T, label2: U) to a variable of type (T, U) and vice versa should absolutely be supported, whether or not reordering is permitted.<br><br>And how about *restating* existing labels without any adding or removing? To be clear:<br><br>```<br>let (partialValue: v, overflow: o) = 42.addingReportingOverflow(42)<br>```<br><br>...involves absolutely no changes in labels whatsoever. The return type is (partialValue: Int, overflow: ArithmeticOverflow).<br><br>Either one of these scenarios is commonly used, and it is astonishing to me that they would be eliminated.<br><br><div class="gmail_quote"><div dir="ltr">On Thu, May 4, 2017 at 23:28 Robert Widmann <<a href="mailto:devteam.codafi@gmail.com">devteam.codafi@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div><div id="m_1919140766618257128AppleMailSignature">That doesn't involve a parameter <i>reordering</i>, but because it changes argument labels it's a shuffle.</div><div id="m_1919140766618257128AppleMailSignature"><br></div>~Robert Widmann</div><div><br>2017/05/05 0:16、Xiaodi Wu <<a href="mailto:xiaodi.wu@gmail.com" target="_blank">xiaodi.wu@gmail.com</a>> のメッセージ:<br><br></div></div><div dir="auto"><blockquote type="cite"><div><div>Robert,</div><div><br></div><div>As I mentioned on Twitter, getting rid of tuple shuffles would not cure your example, which does not involve a shuffle. Unless you're proposing to disallow the use of labels during destructuring entirely, which I would think to be very much unacceptable. Example:</div><div><br></div><div>```</div><div>let (partialValue: v, overflow: o) = 42.addingReportingOverflow(42)</div><div>```</div><div><br></div><div>This involves no shuffling and should absolutely remain allowed.</div><div><br></div><div><br><div class="gmail_quote"><div>On Thu, May 4, 2017 at 21:15 Robert Widmann via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> 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">Hi all,<div><br></div><div>So sorry that this proposal comes so late in the game, but I feel it’s too important not to bring it to the attention of the community now. Attached is a proposal to deprecate a language feature many of you will probably have never had the chance to use: Tuple Shuffles. I’ve attached a copy of the first draft of the proposal below, but the latest copy can be read on <a href="https://github.com/apple/swift-evolution/pull/705/files" target="_blank">Github</a>.</div><div><br></div><div>Thanks!</div><div><br></div><div>~Robert Widmann</div><div><br></div><div><h1 style="box-sizing:border-box;margin-right:0px;margin-bottom:16px;margin-left:0px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(234,236,239);color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';background-color:rgb(255,255,255);margin-top:0px!important">Deprecate Tuple Shuffles</h1><ul style="box-sizing:border-box;padding-left:2em;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)"><li style="box-sizing:border-box">Proposal: <a href="https://github.com/CodaFi/swift-evolution/blob/8eaf320b3c2a117909fc0269c398e89c033a4b9f/proposals/NNNN-filename.md" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none" target="_blank">SE-NNNN</a></li><li style="box-sizing:border-box;margin-top:0.25em">Authors: <a href="https://github.com/codafi" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none" target="_blank">Robert Widmann</a></li><li style="box-sizing:border-box;margin-top:0.25em">Review Manager: TBD</li><li style="box-sizing:border-box;margin-top:0.25em">Status: <span style="box-sizing:border-box;font-weight:600">Awaiting review</span></li></ul><h2 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(234,236,239);color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';background-color:rgb(255,255,255)"><a id="m_1919140766618257128m_5304457839982547920user-content-introduction" class="m_1919140766618257128m_5304457839982547920anchor" href="https://github.com/CodaFi/swift-evolution/blob/8eaf320b3c2a117909fc0269c398e89c033a4b9f/proposals/NNNN-deprecate-tuple-shuffles.md#introduction" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1" target="_blank"><u></u><u></u><u></u><u></u></a>Introduction</h2><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)">This proposal seeks the deprecation of a little-known feature of Swift called a "Tuple Shuffle".</p><h2 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(234,236,239);color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';background-color:rgb(255,255,255)"><a id="m_1919140766618257128m_5304457839982547920user-content-motivation" class="m_1919140766618257128m_5304457839982547920anchor" href="https://github.com/CodaFi/swift-evolution/blob/8eaf320b3c2a117909fc0269c398e89c033a4b9f/proposals/NNNN-deprecate-tuple-shuffles.md#motivation" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1" target="_blank"><u></u><u></u><u></u><u></u></a>Motivation</h2><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)">A tuple-shuffle is an undocumented feature of Swift in which one can re-order the indices of a tuple by writing a pattern that describes a permutation in a syntax reminiscent of adding type-annotations to a parameter list:</p><div class="m_1919140766618257128m_5304457839982547920highlight m_1919140766618257128m_5304457839982547920highlight-source-swift" style="box-sizing:border-box;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)"><pre style="box-sizing:border-box;font-family:SFMono-Regular,Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:13.600000381469727px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(246,248,250);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal"><span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">let</span> a <span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">=</span> (<span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">x</span>: <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">1</span>, <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">y</span>: <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">2</span>)
<span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">var</span> b<span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">:</span> (<span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">y</span>: <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">Int</span>, <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">x</span>: <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">Int</span>)
b <span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">=</span> a</pre></div><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)">It can be used to simultaneously destructure and reorder a tuple:</p><div class="m_1919140766618257128m_5304457839982547920highlight m_1919140766618257128m_5304457839982547920highlight-source-swift" style="box-sizing:border-box;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)"><pre style="box-sizing:border-box;font-family:SFMono-Regular,Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:13.600000381469727px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(246,248,250);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal"><span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">let</span> tuple <span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">=</span> (<span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">first</span>: <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">0</span>, <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">second</span>: (<span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">x</span>: <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">1</span>, <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">y</span>: <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">2</span>))
<span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">let</span> (<span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">second</span>: (<span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">x</span>: b, <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">y</span>: c), <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">first</span>: a) <span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">=</span> tuple</pre></div><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)">It can also be used to map parameter labels out of order in a call expression:</p><div class="m_1919140766618257128m_5304457839982547920highlight m_1919140766618257128m_5304457839982547920highlight-source-swift" style="box-sizing:border-box;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)"><pre style="box-sizing:border-box;font-family:SFMono-Regular,Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:13.600000381469727px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(246,248,250);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal"><span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">func</span> <span class="m_1919140766618257128m_5304457839982547920pl-en" style="box-sizing:border-box;color:rgb(121,93,163)">foo</span>(<span class="m_1919140766618257128m_5304457839982547920pl-smi" style="box-sizing:border-box;color:rgb(51,51,51)"><span class="m_1919140766618257128m_5304457839982547920pl-en" style="box-sizing:border-box;color:rgb(121,93,163)">_</span></span> : (x : <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">Int</span>, y : <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">Int</span>)) {}
<span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">foo</span>((<span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">y</span>: <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">5</span>, <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">x</span>: <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">10</span>)) <span class="m_1919140766618257128m_5304457839982547920pl-c" style="box-sizing:border-box;color:rgb(150,152,150)"><span class="m_1919140766618257128m_5304457839982547920pl-c" style="box-sizing:border-box">//</span> Valid</span></pre></div><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)">Note that a tuple shuffle is distinct from a re-assignment through a tuple pattern. For example, this series of statements will continue to function as before:</p><div class="m_1919140766618257128m_5304457839982547920highlight m_1919140766618257128m_5304457839982547920highlight-source-swift" style="box-sizing:border-box;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)"><pre style="box-sizing:border-box;font-family:SFMono-Regular,Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:13.600000381469727px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(246,248,250);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal"><span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">var</span> x <span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">=</span> <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">5</span>
<span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">var</span> y <span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">=</span> <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">10</span>
<span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">var</span> z <span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">=</span> <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">15</span>
(z, y, x) <span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">=</span> (x, z, y)</pre></div><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)">Their inclusion in the language complicates every part of the compiler stack, uses a <a href="https://twitter.com/CodaFi_/status/860246169854894081" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none" target="_blank">syntax that can be confused for type annotations</a>, contradicts the goals of earlier SE's (see <a href="https://github.com/apple/swift-evolution/blob/9cf2685293108ea3efcbebb7ee6a8618b83d4a90/proposals/0060-defaulted-parameter-order.md" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none" target="_blank">SE-0060</a>), and makes non-sensical patterns possible in surprising places.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)">Take switch-statements, for example:</p><div class="m_1919140766618257128m_5304457839982547920highlight m_1919140766618257128m_5304457839982547920highlight-source-swift" style="box-sizing:border-box;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)"><pre style="box-sizing:border-box;font-family:SFMono-Regular,Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:13.600000381469727px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(246,248,250);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal"><span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">switch</span> ((<span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">0</span>, <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">0</span>), <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">0</span>){
<span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">case</span> (<span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">_</span> : <span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">let</span> (y, z), <span class="m_1919140766618257128m_5304457839982547920pl-c1" style="box-sizing:border-box;color:rgb(0,134,179)">_</span> : <span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">let</span> s)<span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">:</span> () <span class="m_1919140766618257128m_5304457839982547920pl-c" style="box-sizing:border-box;color:rgb(150,152,150)"><span class="m_1919140766618257128m_5304457839982547920pl-c" style="box-sizing:border-box">//</span> We are forbidden from giving these patterns names other than "_" </span>
<span class="m_1919140766618257128m_5304457839982547920pl-c" style="box-sizing:border-box;color:rgb(150,152,150)"></span><span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">default</span><span class="m_1919140766618257128m_5304457839982547920pl-k" style="box-sizing:border-box;color:rgb(167,29,93)">:</span> ()
}</pre></div><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)">This proposal seeks to deprecate them in Swift 3 compatibility mode and enforce that deprecation as a hard error in Swift 4 to facilitate their eventual removal from the language.</p><h2 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(234,236,239);color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';background-color:rgb(255,255,255)"><a id="m_1919140766618257128m_5304457839982547920user-content-proposed-solution" class="m_1919140766618257128m_5304457839982547920anchor" href="https://github.com/CodaFi/swift-evolution/blob/8eaf320b3c2a117909fc0269c398e89c033a4b9f/proposals/NNNN-deprecate-tuple-shuffles.md#proposed-solution" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1" target="_blank"><u></u><u></u><u></u><u></u></a>Proposed solution</h2><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)">Construction of Tuple Shuffle Expressions will become a warning in Swift 3 compatibility mode and will be a hard-error in Swift 4.</p><h2 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(234,236,239);color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';background-color:rgb(255,255,255)"><a id="m_1919140766618257128m_5304457839982547920user-content-detailed-design" class="m_1919140766618257128m_5304457839982547920anchor" href="https://github.com/CodaFi/swift-evolution/blob/8eaf320b3c2a117909fc0269c398e89c033a4b9f/proposals/NNNN-deprecate-tuple-shuffles.md#detailed-design" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1" target="_blank"><u></u><u></u><u></u><u></u></a>Detailed design</h2><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)">In addition to the necessary diagnostics, the grammar will be ammended to simplify the following productions:</p><div class="m_1919140766618257128m_5304457839982547920highlight m_1919140766618257128m_5304457839982547920highlight-source-diff" style="box-sizing:border-box;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)"><pre style="box-sizing:border-box;font-family:SFMono-Regular,Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:13.600000381469727px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(246,248,250);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal">tuple-pattern → (tuple-pattern-element-list <opt>)
tuple-pattern-element-list → tuple-pattern-element | tuple-pattern-element , tuple-pattern-element-list
<span class="m_1919140766618257128m_5304457839982547920pl-md" style="box-sizing:border-box;color:rgb(189,44,0);background-color:rgb(255,236,236)"><span class="m_1919140766618257128m_5304457839982547920pl-md" style="box-sizing:border-box">-</span> tuple-pattern-element → pattern | identifier:pattern</span>
<span class="m_1919140766618257128m_5304457839982547920pl-mi1" style="box-sizing:border-box;color:rgb(85,165,50);background-color:rgb(234,255,234)"><span class="m_1919140766618257128m_5304457839982547920pl-mi1" style="box-sizing:border-box">+</span> tuple-pattern-element → pattern</span></pre></div><h2 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(234,236,239);color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';background-color:rgb(255,255,255)"><a id="m_1919140766618257128m_5304457839982547920user-content-impact-on-existing-code" class="m_1919140766618257128m_5304457839982547920anchor" href="https://github.com/CodaFi/swift-evolution/blob/8eaf320b3c2a117909fc0269c398e89c033a4b9f/proposals/NNNN-deprecate-tuple-shuffles.md#impact-on-existing-code" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1" target="_blank"><u></u><u></u><u></u><u></u></a>Impact on Existing Code</h2><p style="box-sizing:border-box;margin-top:0px;margin-bottom:16px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)">Because very little code is intentionally using Tuple Shuffles, impact on existing code will be negligible but not non-zero.</p><h2 style="box-sizing:border-box;margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(234,236,239);color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';background-color:rgb(255,255,255)"><a id="m_1919140766618257128m_5304457839982547920user-content-alternatives-considered" class="m_1919140766618257128m_5304457839982547920anchor" href="https://github.com/CodaFi/swift-evolution/blob/8eaf320b3c2a117909fc0269c398e89c033a4b9f/proposals/NNNN-deprecate-tuple-shuffles.md#alternatives-considered" style="box-sizing:border-box;background-color:transparent;color:rgb(3,102,214);text-decoration:none;float:left;padding-right:4px;line-height:1" target="_blank"><u></u><u></u><u></u><u></u></a>Alternatives considered</h2><div style="box-sizing:border-box;margin-top:0px;color:rgb(36,41,46);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255);margin-bottom:0px!important">Continue to keep the architecture in place to facilitate this feature.</div></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>
</div></blockquote></div></blockquote></div>