<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 5, 2016, at 12:29 AM, Thorsten Seitz <<a href="mailto:tseitz42@icloud.com" class="">tseitz42@icloud.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="content-type" content="text/html; charset=utf-8" class=""><div dir="auto" class=""><div class=""></div><div class="">I once suggested the following ternary like switch:</div><div class=""><br class=""></div><div class=""><b class="">let</b> x = color ?</div><div class=""> <b class="">case</b> .<span style="background-color: rgba(255, 255, 255, 0);" class="">Red: <span class="">0xFF0000</span></span><div class=""><div dir="auto" class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><div class="" style="margin: 0px; line-height: normal;"><div class="" style="margin: 0px; line-height: normal;"><font class=""><span style="background-color: rgba(255, 255, 255, 0);" class=""> <span class="Apple-tab-span" style="white-space: pre;">        </span><b class="">case</b> .Green: <span class="">0x00FF00</span></span></font></div><div class="" style="margin: 0px; line-height: normal;"><font class=""><span style="background-color: rgba(255, 255, 255, 0);" class=""> <b class="">case</b> .Blue: <span class="">0x0000FF</span> </span></font></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><span style="background-color: rgba(255, 255, 255, 0);" class=""> <b class="">default</b>: <span class="">0xFFFFFF</span></span></div></div></div></blockquote><div><br class=""></div><div>This is the ternary-like switch I was referring to. I think this is the best case we can hope for given the comments in the “frequently proposed changes” list. A switch expression of some kind would be a nice improvement and this fits well with the feasibility assumptions we should make given those comments.</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="auto" class=""><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class=""><span class=""><br class=""></span></span></div><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class=""><span class="">Reusing "case" and "default" makes it possible IMO to distinguish the cases even if writing them in one line (which I would never do for a switch-expression for readability). Furthermore it males it similar to the switch statement and therefore recognizable.</span></span></div><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class=""><span class="">Last not least it keeps parsing for the compiler simple.</span></span></div><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class=""><span class=""><br class=""></span></span></div><div class="">The cases only allow expressions (I personally would allow blocks with the last expression being the result of the block but there seems to be an aversion to braces in expressions, so I could live with that restriction).</div></div></div></blockquote><div><br class=""></div><div>You could still use the immediately invoked closure trick here. It’s not that bad.</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="auto" class=""><div class="">The patterns would allow everything that is allowed for patterns in switch statements.</div><div class=""><br class=""></div><div class="">-Thorsten </div><div class=""><br class="">Am 05.01.2016 um 01:14 schrieb Matthew Johnson via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>>:<br class=""><br class=""></div><blockquote type="cite" class=""><div class=""><meta http-equiv="content-type" content="text/html; charset=utf-8" class=""><div class=""><br class=""><br class="">Sent from my iPad</div><div class=""><br class="">On Jan 4, 2016, at 5:45 PM, Charles Constant <<a href="mailto:charles@charlesism.com" class="">charles@charlesism.com</a>> wrote:<br class=""><br class=""></div><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="">Our ternary-like switch is now in the "<a href="http://commonly_proposed.md/" class="">commonly_proposed.md</a>" file, which doesn't bode very well. It puzzles me that there isn't more enthusiasm. Are we the only ones who get irritated taking up so much space with a "switch" when all we need to do is transform between two sets of values?</div></div></div></blockquote><div class=""><br class=""></div>The ternary-like switch expression is not on the list. Changing or removing ternary itself as well as turning if / else and switch into expressions are on the list.<div class=""><br class=""></div><div class="">I think some potential issues with ternary-like switch may have come up but maybe they can be resolved. If not, I don't think we will see progress in this area in the near future.</div><div class=""><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class=""><br class=""></div><div class="">I think we need to revamp the proposal somehow to make the idea clearer, because it ought to be pretty compelling.</div><div class=""><br class=""></div><div class="">• Does anyone here have better "side by side" examples of code before/after? </div><div class=""><br class=""></div><div class="">• Can anyone think of a way to revise the (English) language of the proposal to make it shorter and sweeter? </div><div class=""><br class=""></div><div class="">Apologies for prescribing instead of doing. My only excuse is that I'm "too busy"</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Mon, Jan 4, 2016 at 3:03 PM, Matthew Johnson via swift-evolution <span dir="ltr" class=""><<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><br class=""><div class=""><span class=""><blockquote type="cite" class=""><div class="">On Jan 4, 2016, at 2:37 PM, Paul Ossenbruggen via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>> wrote:</div><br class=""><div class=""><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important" class="">Good feedback, I am all for making it feel more like swift. Any ideas would be welcome. I will also try to come up with some myself. </span></div></blockquote><div class=""><br class=""></div></span><div class="">My suggestion is to leave ternary alone and try to come up with a ternary-like switch expression that is workable. I think that is likely the best change possible at this point.</div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><div class="h5"><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><br class=""></div><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Jan 4, 2016, at 12:34 PM, Rod Brown <<a href="mailto:rodney.brown6@icloud.com" target="_blank" class="">rodney.brown6@icloud.com</a>> wrote:</div><br class=""><div class=""><div dir="auto" class=""><div class="">For all the proposals I've seen on this topic, I have to say -1.</div><div class=""><br class=""></div><div class="">While I agree with the notions surrounding this operator, I've yet to see a better alternative presented, and none that feel truly Swift.</div><div class=""><br class=""></div><div class="">If someone has a great proposal, though, I look forward to seeing it.</div><div class=""><br class="">- Rod</div><div class=""><br class="">On 5 Jan 2016, at 7:28 AM, Howard Lovatt via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>> wrote:<br class=""><br class=""></div><blockquote type="cite" class=""><div class="">-1 for me. None of it looks or feels like Swift, more like Haskell. I would prefer a library solution for now and remove ?: from the language and add a which into the standard library and see how that goes and if there is need for more.<div class=""><br class=""><div class="">Sorry,<br class=""><br class="">Howard.<br class=""></div><div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><div class="">On 5 Jan 2016, at 7:24 AM, Paul Ossenbruggen via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>> wrote:</div><br class=""><div class=""><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important" class="">Any feedback on this? I am rethinking the idea of #( because of the # prior usage as a preprocessor directive, but like how it stands out and has a meaning. If no feedback, does it make sense to update my proposal with these ideas? Or does this feel like the wrong direction. </span><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><br class=""><div class=""><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Dec 30, 2015, at 8:52 AM, Paul Ossenbruggen <<a href="mailto:possen@gmail.com" target="_blank" class="">possen@gmail.com</a>> wrote:</div><br class=""><div class=""><div style="word-wrap:break-word" class=""><div class=""><div style="margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal" class="">Some more ideas, this moves away from the notion that we should make it look really close to the ternary but keeps all the benefits of the ternary and improves upon it. Since I have been suggesting a breaking change, it is a good time to rethink it a bit. With this idea a horizontal line (double-dash) separates the control value from the choices, the vertical line (bar) indicates none of the above. </div><div style="margin:0px;line-height:normal" class=""><br class=""></div><div style="margin:0px;line-height:normal" class="">Rather than use the ?( as I have suggested in the past, I think #( works here, where you can think of it as a numerical index. The advantage of this is, it stands out better and leaves ? for optionals only. This works well with the list form. In the enum case the index is the enum key. I can see that this however may be a problem because # is used for preprocessor like directives. I am suggesting though just the #( sequence is treated differently. Or the ?( is fine with me as well.</div><div style="margin:0px;line-height:normal" class=""><br class=""></div><div style="margin:0px;line-height:normal" class="">I have gone through a lot of options, some others I looked at are !( which could be read as "match stick” paren, where the word “match” matches a case, I am pretty sure that would not be considered any better than ?( because it is used for optionals. Another is “witch hat paren” ^( which can be read as “which”. This might create a parse problem with "power of" though, which maybe using ^[ (hat square bracket) could resolve that but not sure if that would create other problems. Some other choices would be &( and @( but did not choose them because they don’t have meaning to me but they do have the advantage of standing out like the #(. </div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><br class=""></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class="">let</span><span class=""> </span>fa = #(truth -- <span style="color:rgb(39,42,216)" class="">1</span><span class=""> </span>|<span class=""> </span><span style="color:rgb(39,42,216)" class="">0</span>)<span class=""> </span><font color="#77bb41" class="">// boolean case</font>. </div><div style="margin:0px;line-height:normal" class=""><span style="font-family:Menlo;color:rgb(187,44,162)" class="">let</span><font face="Menlo" class=""><span class=""> </span>fb = #(pickOne -- </font><span style="font-family:Menlo;color:rgb(209,47,27)" class="">"A"</span><font face="Menlo" class="">,<span class=""> </span></font><span style="font-family:Menlo;color:rgb(209,47,27)" class="">"B"</span><font face="Menlo" class="">,<span class=""> </span></font><span style="font-family:Menlo;color:rgb(209,47,27)" class="">"C"</span><font face="Menlo" class="">,<span class=""> </span></font><span style="font-family:Menlo;color:rgb(209,47,27)" class="">"D"</span><font face="Menlo" class="">,<span class=""> </span></font><span style="font-family:Menlo;color:rgb(209,47,27)" class="">"E"</span><font face="Menlo" class="">,<span class=""> </span></font><span style="font-family:Menlo;color:rgb(209,47,27)" class="">"F"</span><font face="Menlo" class="">,<span class=""> </span></font><span style="font-family:Menlo;color:rgb(209,47,27)" class="">"G"</span><font face="Menlo" class=""><span class=""> </span>|<span class=""> </span></font><span style="font-family:Menlo;color:rgb(209,47,27)" class="">"Z</span><font color="#d12f1b" face="Menlo" class="">”</font><font face="Menlo" class="">)<span class=""> </span><font color="#669c35" class="">// list form, pick index, zero based</font>. </font></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class="">let</span><span class=""> </span>fc = #(color -- .Red:<span class=""> </span><span style="color:rgb(39,42,216)" class="">0xFF0000</span>, .Green:<span class=""> </span><span style="color:rgb(39,42,216)" class="">0x00FF00</span>, .Blue:<span class=""> </span><span style="color:rgb(39,42,216)" class="">0x0000FF</span><span class=""> </span>|<span class=""> </span><span style="color:rgb(39,42,216)" class="">0xFFFFFF</span>)<span class=""> </span><font color="#669c35" class="">// enum form.</font></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class="">let</span> fd = #(color -- .Red: <span style="color:rgb(39,42,216)" class="">0xFF0000</span>, </div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""> <span class=""> </span><span style="white-space:pre-wrap" class="">        </span> <span style="white-space:pre-wrap" class="">        </span> .Green: <span style="color:rgb(39,42,216)" class="">0x00FF00</span>, </div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><span style="white-space:pre-wrap" class="">        </span> <span style="white-space:pre-wrap" class="">        </span> .Blue: <span class=""> </span><span style="color:rgb(39,42,216)" class="">0x0000FF</span> </div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""> <span class=""> </span><span style="white-space:pre-wrap" class="">        </span> | <span style="color:rgb(39,42,216)" class="">0xFFFFFF</span>)<span class=""> </span><font color="#669c35" class="">// enum multiline, default: can be used here if preferred.</font></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class="">let</span> fe = #(color -- .Red: <span style="color:rgb(39,42,216)" class="">0xFF0000</span>, </div><div style="margin:0px;line-height:normal" class=""> <span style="white-space:pre-wrap" class="">        </span> <span style="white-space:pre-wrap" class="">        </span> .Green: <span style="color:rgb(39,42,216)" class="">0x00FF00</span>, </div><div style="margin:0px;line-height:normal" class=""><span style="white-space:pre-wrap" class="">        </span> <span style="white-space:pre-wrap" class="">        </span> .Blue: <span style="color:rgb(39,42,216)" class="">0x0000FF</span>) <span style="color:rgb(102,156,53)" class="">// if all cases handled, the last bar is optional</span></div><div style="margin:0px;line-height:normal" class=""><span style="color:rgb(102,156,53)" class=""><br class=""></span></div></div><div style="margin:0px;line-height:normal" class="">This visually kind of represents what is going on. Horizontal-line directs eye to one of the normal choices. Vertical-line says none found stop looking and do the otherwise choice. Kind of like a train switch. </div><div style="margin:0px;line-height:normal" class=""><br class=""></div><div style="margin:0px;line-height:normal" class="">The strong feedback was that a replacement has to be usable in places where a ternary could be used. So it needs to work on a single line (and multiline) and needs to be compact. By having a compact, “else" that is possible on a single line. </div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><br class=""></div><div style="margin:0px;line-height:normal" class="">Comparisons to ternary and other approaches:</div><div style="margin:0px;line-height:normal" class="">• It is very concise like ternary and can fit in places that a ternary does.</div><div style="margin:0px;line-height:normal" class="">• The horizontal line serves to provide a place to align the choices to pick from, not as necessary with ternary. </div><div style="margin:0px;line-height:normal" class="">• The vertical line stops the eye and indicates this is the “else” or “default” choice, the colon does that in ternary but the bar stands out more.</div><div style="margin:0px;line-height:normal" class="">• The parens group the expression, in a way that the ternary does not. With a ternary it is not until you get to the question mark and the barely visible colon that you realize it is a ternary. </div><div style="margin:0px;line-height:normal" class="">• The #( indicates immediately that the expression has started unlike a ternary. </div><div style="margin:0px;line-height:normal" class="">• #( clearly show beginning and end of the construct so that it is immediately identifiable unlike ternary.</div><div style="margin:0px;line-height:normal" class="">• Makes quick one line conversions easily achievable just as ternary can but allowing more than just boolean. </div><div style="margin:0px;line-height:normal" class="">• The “else” choice is always last and is compactly represented with vertical bar like ternary but more visible. This also differs from the switch statement form, in that it is much more compact than “default:"</div><div style="margin:0px;line-height:normal" class="">• The dash does not create a double colon for enum case as was mentioned as a problem in previous designs.</div><div style="margin:0px;line-height:normal" class="">• All data types for the control are handled the same way, like ternary but now supports more than boolean, it supports any enumerable tope.</div><div style="margin:0px;line-height:normal" class="">• The list form looks like a Array sort of, the enum form looks sort of like a Dictionary, this should make it seem familiar.</div><div style="margin:0px;line-height:normal" class="">• The enum form also supports pattern matching. (see below for examples). Which ternary does not.</div><div style="margin:0px;line-height:normal" class="">• The vast majority of switch statements, at least that I typically use, could be done with this and be much more compact and concise. However if your needs are more complex, then the switch statement is still available. </div><div style="margin:0px;line-height:normal" class="">• You get the benefits of automatic type inference where switch statements used to assign an expression result don’t let you.</div><div style="margin:0px;line-height:normal" class="">• It removes a lot of duplicated code compared to a switch statement assigning an expression result. </div><div style="margin:0px;line-height:normal" class="">• It makes it clear that the result of the expression can be a “let” where less experienced users may think a “var" is required in a switch statement.</div><div style="margin:0px;line-height:normal" class="">• The name binding and assignment occurs in one step unlike the switch statement, when used to assign an expression result. </div><div style="margin:0px;line-height:normal" class="">• It always returns a result of an expression like ternary does and will enforce that the result is a the same type. </div><div style="margin:0px;line-height:normal" class="">• Like ternary leaves the formatting choice to the developer for multiline and single-line but easily handles both.</div><div style="margin:0px;line-height:normal" class="">• Searchable with web search unlike ternary. </div><div style="margin:0px;line-height:normal" class="">• Enum uses the same format as the familiar switch syntax which ternary does not.</div><div style="margin:0px;line-height:normal" class="">• #( stands out more than ?( in my earlier designs.<span style="font-family:Menlo" class=""> </span></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><br class=""></div></div></div><div class="">The difference between this and the switch statement is that this deals only in single expressions for each case. There can only be one expression that gets selected by the control input. This simplifies things compared to a switch statement there are not multiple statements to list afterwards and it does not need the word “case" before each part of the choice to separate each list of statements. This makes it so that it can be much more compact and means the word “case” is not necessary. </div><div class=""><br class=""></div><div class="">Below I go through a bunch of comparisons to statement form, vs new expression also different formatting options:</div><div class=""><br class=""></div><div class=""><div style="margin:0px;line-height:normal;font-family:Menlo" class=""><span style="color:rgb(187,44,162)" class="">let</span><span class=""> </span>res :<span class=""> </span><span style="color:rgb(112,61,170)" class="">Int</span></div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(187,44,162)" class="">switch<span class=""><span class=""> </span></span><span style="color:rgb(79,129,135)" class="">color</span><span class=""><span class=""> </span>{</span></div><div style="margin:0px;line-height:normal;font-family:Menlo" class=""> <span class=""> </span><span style="color:rgb(187,44,162)" class="">case</span><span class=""> </span>.Red:<span class=""> </span><span style="color:rgb(79,129,135)" class="">res</span><span class=""> </span>=<span class=""> </span><span style="color:rgb(39,42,216)" class="">0xFF0000</span></div><div style="margin:0px;line-height:normal;font-family:Menlo" class=""> <span class=""> </span><span style="color:rgb(187,44,162)" class="">case</span><span class=""> </span>.Green:<span class=""> </span><span style="color:rgb(79,129,135)" class="">res</span><span class=""> </span>= <span style="color:rgb(39,42,216)" class="">0x00FF00</span></div><div style="margin:0px;line-height:normal;font-family:Menlo" class=""> <span class=""> </span><span style="color:rgb(187,44,162)" class="">case</span><span class=""> </span>.Blue:<span class=""> </span><span style="color:rgb(79,129,135)" class="">res</span><span class=""> </span>=<span class=""> </span><span style="color:rgb(39,42,216)" class="">0x0000FF</span></div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(187,44,162)" class="">default<span class="">:</span></div><div style="margin:0px;line-height:normal;font-family:Menlo;color:rgb(39,42,216)" class=""><span class=""> <span class=""> </span></span><span style="color:rgb(79,129,135)" class="">res</span><span class=""><span class=""> </span>=<span class=""> </span></span>0xFFFFFF</div><div style="margin:0px;line-height:normal;font-family:Menlo" class="">}</div></div><div class=""><br class=""></div><div class="">With the new expression:</div><div class=""><br class=""></div><div style="margin:0px;line-height:normal;font-family:Menlo" class=""><span style="color:rgb(187,44,162)" class="">let</span><span class=""> </span>res = #(<span style="color:rgb(79,129,135)" class="">color --</span> .Red: <span style="color:rgb(39,42,216)" class="">0xFF0000</span></div><div style="margin:0px;line-height:normal;font-family:Menlo" class=""> <span class=""> </span><span style="white-space:pre-wrap" class="">                </span> .Green: <span style="color:rgb(39,42,216)" class="">0x00FF00</span></div><div style="margin:0px;line-height:normal;font-family:Menlo" class=""> .Blue: <span style="color:rgb(39,42,216)" class="">0x0000FF</span></div><div style="margin:0px;line-height:normal;font-family:Menlo" class=""><span class=""> </span><font color="#4f8187" class="">| </font><font color="#272ad8" class="">0xFFFFFF</font>}</div><div style="margin:0px;line-height:normal;font-family:Menlo" class=""><br class=""></div><div style="margin:0px;line-height:normal" class="">This uses a where clause with existing statement:<span style="font-family:Menlo" class=""> </span></div><div style="margin:0px;line-height:normal;font-family:Menlo" class=""><br class=""></div><div style="margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal;font-family:Menlo" class=""><span style="color:rgb(187,44,162)" class="">let</span> res : <span style="color:rgb(112,61,170)" class="">Int</span></div><div style="font-family:Menlo;color:rgb(187,44,162);margin:0px;line-height:normal" class="">switch<span class=""><span class=""> </span></span><span style="color:rgb(79,129,135)" class="">color</span><span class=""><span class=""> </span>{</span></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class=""> case .</span>Red<span class=""> </span><font color="#bb2ca2" class="">where</font><span class=""> </span><span style="color:rgb(79,129,135)" class="">shade</span><span class=""> </span><span style="color:rgb(49,89,93)" class="">==</span><font color="#bb2ca2" class=""><span class=""> </span>.</font><span style="color:rgb(49,89,93)" class="">Dark</span><font color="#bb2ca2" class="">:<span class=""> </span></font><span style="color:rgb(79,129,135)" class="">res</span><font color="#bb2ca2" class=""><span class=""> </span>=<span class=""> </span></font><span style="color:rgb(39,42,216)" class="">0xFF1010</span></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class=""> case .</span>Red<font color="#bb2ca2" class="">:<span class=""> </span></font><span style="color:rgb(79,129,135)" class="">res</span><font color="#bb2ca2" class=""><span class=""> </span>=<span class=""> </span></font><span style="color:rgb(39,42,216)" class="">0xFF0000</span></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class=""> case .</span>Green<font color="#bb2ca2" class="">:<span class=""> </span></font><span style="color:rgb(79,129,135)" class="">res</span><font color="#bb2ca2" class=""><span class=""> </span>= </font><span style="color:rgb(39,42,216)" class="">0x00FF00</span></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class=""> case .</span>Blue<font color="#bb2ca2" class="">:<span class=""> </span></font><span style="color:rgb(79,129,135)" class="">res</span><font color="#bb2ca2" class=""><span class=""> </span>=<span class=""> </span></font><span style="color:rgb(39,42,216)" class="">0x0000FF</span></div><div style="font-family:Menlo;color:rgb(187,44,162);margin:0px;line-height:normal" class=""><span class=""> <span class=""> </span></span>default<span class="">:</span></div><div style="font-family:Menlo;color:rgb(187,44,162);margin:0px;line-height:normal" class=""> <span class=""> </span><span style="color:rgb(79,129,135)" class="">res</span><span class=""> </span>=<span class=""> </span><span style="color:rgb(39,42,216)" class="">0xFFFFFF</span></div><div style="font-family:Menlo;color:rgb(187,44,162);margin:0px;line-height:normal" class="">}</div><div style="color:rgb(187,44,162);margin:0px;line-height:normal" class=""><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><br class=""></div><div style="margin:0px;line-height:normal" class="">This one way to do the same thing with multiline and the expression if it makes it clearer, some may prefer this: </div><div style="font-family:Menlo" class=""><br class=""></div></div><div class=""><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><font color="#bb2ca2" class="">let </font>res = #(<span style="color:rgb(79,129,135)" class="">color </span>-- </div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><font color="#bb2ca2" class=""> case .</font>Red<font color="#bb2ca2" class=""> where </font><span style="color:rgb(79,129,135)" class="">shade</span><font color="#bb2ca2" class=""> </font><span style="color:rgb(49,89,93)" class="">==</span><font color="#bb2ca2" class=""> .</font><span style="color:rgb(49,89,93)" class="">Dark</span><font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0xFF1010</span></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class=""> case .</span>Red<font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0xFF0000</span></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class=""> case .</span>Green<font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0x00FF00</span></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class=""> case .</span>Blue<font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0x0000FF</span></div><div style="font-family:Menlo;color:rgb(187,44,162);margin:0px;line-height:normal" class=""><span class=""> </span>default: <span style="color:rgb(39,42,216)" class="">0xFFFFFF</span></div><div style="font-family:Menlo;color:rgb(187,44,162);margin:0px;line-height:normal" class="">}</div><div style="font-family:Menlo;color:rgb(187,44,162);margin:0px;line-height:normal" class=""><br class=""></div><div style="color:rgb(187,44,162);margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal" class="">Since this the case does not add anything, you can do this as well:</div><div style="font-family:Menlo" class=""><br class=""></div></div></div><div style="font-family:Menlo" class=""><div style="margin:0px;line-height:normal" class=""><font color="#bb2ca2" class="">let<span class=""> </span></font>res = #(<span style="color:rgb(79,129,135)" class="">color<span class=""> </span></span>—- <span style="color:rgb(187,44,162)" class="">.</span>Red<span class=""> </span><font color="#bb2ca2" class="">where</font><span class=""> </span><span style="color:rgb(79,129,135)" class="">shade</span><span class=""> </span><span style="color:rgb(49,89,93)" class="">==</span><font color="#bb2ca2" class=""><span class=""> </span>.</font><span style="color:rgb(49,89,93)" class="">Dark</span><font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0xFF1010</span></div></div></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px" class=""><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px" class=""><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px" class=""><div style="margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal" class=""><div style="font-family:Menlo" class=""><div style="margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class=""> .</span>Red<font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0xFF0000</span></div></div></div></div></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px" class=""><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px" class=""><div style="margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal" class=""><div style="font-family:Menlo" class=""><div style="margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class=""> .</span>Green<font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0x00FF00</span></div></div></div></div></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px" class=""><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px" class=""><div style="margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal" class=""><div style="font-family:Menlo" class=""><div style="margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class=""> .</span>Blue<font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0x0000FF</span></div></div></div></div></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px" class=""><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px" class=""><div style="margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal" class=""><div style="font-family:Menlo" class=""><div style="margin:0px;line-height:normal" class=""><span class=""> |</span><font color="#bb2ca2" class=""> </font><span style="color:rgb(39,42,216)" class="">0xFFFFFF</span><span style="color:rgb(187,44,162)" class="">}</span></div></div></div></div></blockquote></blockquote></blockquote><div style="margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal" class=""><div style="font-family:Menlo;color:rgb(187,44,162)" class=""><br class=""></div></div></div><div class="">If “case” makes the “where" clearer then I am fine requiring it but I don’t think it is necessary:<font face="Menlo" class=""> </font>To make this kind of formatting easy, the editor should help align with the dashes. To allow more space on each line this would also work:</div><div class=""><br class=""></div><div class=""><div style="margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal" class=""><div style="font-family:Menlo" class=""><div style="margin:0px;line-height:normal" class=""><font color="#bb2ca2" class="">let </font>res = #(<span style="color:rgb(79,129,135)" class="">color</span></div><div style="margin:0px;line-height:normal" class=""><font color="#4f8187" class=""> -</font>— <span style="color:rgb(187,44,162)" class="">.</span>Red <font color="#bb2ca2" class="">where</font> <span style="color:rgb(79,129,135)" class="">shade</span> <span style="color:rgb(49,89,93)" class="">==</span><font color="#bb2ca2" class=""> .</font><span style="color:rgb(49,89,93)" class="">Dark</span><font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0xFF1010</span></div><div style="margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class=""> .</span>Red<font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0xFF0000</span></div><div style="margin:0px;line-height:normal" class=""><font color="#272ad8" class=""> </font><span style="color:rgb(187,44,162)" class=""><span class=""> </span> .</span>Green<font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0x00FF00</span></div><div style="margin:0px;line-height:normal" class=""><font color="#272ad8" class=""> </font><span style="color:rgb(187,44,162)" class=""><span class=""> </span> .</span>Blue<font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0x0000FF</span></div><div style="margin:0px;line-height:normal" class=""><font color="#272ad8" class=""> </font><span class=""> </span> |<font color="#bb2ca2" class=""> </font><span style="color:rgb(39,42,216)" class="">0xFFFFFF</span><span style="color:rgb(187,44,162)" class="">}</span></div></div></div></div><div style="margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal" class=""></div></div></div><div class=""><br class=""></div><div class="">one last option for maximum space on the line:</div><div class=""><br class=""></div><div class=""><div class=""><div style="margin:0px;line-height:normal" class=""><div style="margin:0px;line-height:normal" class=""><div class=""><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><font color="#bb2ca2" class="">let </font>res = #(<span style="color:rgb(79,129,135)" class="">color </span>—- </div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""> <span style="color:rgb(187,44,162)" class="">.</span>Red <font color="#bb2ca2" class="">where</font> <span style="color:rgb(79,129,135)" class="">shade</span> <span style="color:rgb(49,89,93)" class="">==</span><font color="#bb2ca2" class=""> .</font><span style="color:rgb(49,89,93)" class="">Dark</span><font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0xFF1010</span></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><span style="color:rgb(187,44,162)" class=""> .</span>Red<font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0xFF0000</span></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><font color="#272ad8" class=""> </font><span style="color:rgb(187,44,162)" class="">.</span>Green<font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0x00FF00</span></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><font color="#272ad8" class=""> </font><span style="color:rgb(187,44,162)" class="">.</span>Blue<font color="#bb2ca2" class="">: </font><span style="color:rgb(39,42,216)" class="">0x0000FF</span></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><font color="#272ad8" class=""> </font>|<font color="#bb2ca2" class=""> </font><span style="color:rgb(39,42,216)" class="">0xFFFFFF</span><span style="color:rgb(187,44,162)" class="">}</span></div><div style="font-family:Menlo;margin:0px;line-height:normal" class=""><br class=""></div></div></div></div></div><blockquote type="cite" class=""><div class="">On Dec 23, 2015, at 11:51 AM, Paul Ossenbruggen <<a href="mailto:possen@gmail.com" target="_blank" class="">possen@gmail.com</a>> wrote:</div><br class=""><div class=""><div style="word-wrap:break-word" class="">Been thinking about the boolean case a bit more, and how to make it better than a ternary using my proposed syntax. So else could be put there to help show it is the opposite. The downside is this makes it mix keywords and operators so seems a bit jarring. <div class=""><br class=""></div><div class=""><p style="margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)" class="">With the new form parenthesis are built into it and are required:</p><div style="margin-bottom:16px;color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)" class=""><pre style="overflow:auto;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:14px;margin-top:0px;margin-bottom:0px;line-height:1.45;padding:16px;background-color:rgb(247,247,247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-wrap:normal;word-break:normal" class="">x <span style="color:rgb(167,29,93)" class="">=</span> ?(x <span style="color:rgb(167,29,93)" class="">==</span> y <span style="color:rgb(167,29,93)" class="">:</span> <span style="color:rgb(0,134,179)" class="">49</span> <span style="color:rgb(167,29,93)" class="">else</span> <span style="color:rgb(0,134,179)" class="">3</span>) </pre></div><p style="margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)" class="">alternatively the bang means do the opposite:</p><div style="margin-bottom:16px;color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)" class=""><pre style="overflow:auto;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:14px;margin-top:0px;margin-bottom:0px;line-height:1.45;padding:16px;background-color:rgb(247,247,247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-wrap:normal;word-break:normal" class="">x <span style="color:rgb(167,29,93)" class="">=</span> ?(x <span style="color:rgb(167,29,93)" class="">==</span> y <span style="color:rgb(167,29,93)" class="">:</span> <span style="color:rgb(0,134,179)" class="">49</span> <span style="color:rgb(167,29,93)" class="">!</span> <span style="color:rgb(0,134,179)" class="">3</span>) <span style="color:rgb(150,152,150)" class="">// not sure this creates a parsing problem. </span></pre></div><p style="margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)" class="">or if the above causes a parsing problem:</p><div style="margin-bottom:16px;color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)" class=""><pre style="overflow:auto;font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:14px;margin-top:0px;margin-bottom:0px;line-height:1.45;padding:16px;background-color:rgb(247,247,247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-wrap:normal;word-break:normal" class="">x <span style="color:rgb(167,29,93)" class="">=</span> ?(x <span style="color:rgb(167,29,93)" class="">==</span> y <span style="color:rgb(167,29,93)" class="">:</span> <span style="color:rgb(0,134,179)" class="">49</span> <span style="color:rgb(167,29,93)" class="">|</span> <span style="color:rgb(0,134,179)" class="">3</span>) </pre></div><div class="">Any thoughts?</div><div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><div class="">On Dec 23, 2015, at 7:02 AM, Félix Cloutier via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>> wrote:</div><br class=""><div class=""><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important" class="">I know, but that won't support pattern matching.</span><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><br class=""><div class=""><span style="border-collapse:separate;font-family:'Lucida Grande';line-height:normal;border-spacing:0px" class="">Félix</span></div><br class=""><div class=""><blockquote type="cite" class=""><div class="">Le 23 déc. 2015 à 02:22:07, David Waite <<a href="mailto:david@alkaline-solutions.com" target="_blank" class="">david@alkaline-solutions.com</a>> a écrit :</div><br class=""><div class=""><div style="word-wrap:break-word" class="">In the case where your input is hashable, you could just do:<div class=""><br class=""></div><div class=""><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(39,42,216)" class=""><span style="color:rgb(187,44,162)" class="">let</span><span class=""> i = [.</span><span style="color:rgb(49,89,93)" class="">Red</span><span class="">:</span>0xff0000<span class="">, .</span><span style="color:rgb(49,89,93)" class="">Green</span><span class="">:</span>0x00ff00<span class="">, .</span><span style="color:rgb(49,89,93)" class="">Blue</span><span class="">:</span>0x0000ff<span class="">][</span><span style="color:rgb(79,129,135)" class="">color</span><span class="">]</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(39,42,216)" class=""><span class=""><br class=""></span></div><div style="margin:0px;line-height:normal" class=""><font face="Menlo" class=""><span style="font-size:11px" class="">this would mean that color must be a Color and not an Optional<Color> (because of swift 2.x limitations)</span></font></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(39,42,216)" class=""><span class=""><br class=""></span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(39,42,216)" class=""><span class="">-DW</span></div><div style="margin:0px;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(39,42,216)" class=""><span class=""><br class=""></span></div><div class=""><blockquote type="cite" class=""><div class="">On Dec 22, 2015, at 8:04 AM, Félix Cloutier via swift-evolution <<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>> wrote:</div><br class=""><div class=""><div class="">I like the gist of it too, though you seem to introduce both a new keyword and a new syntax. (To be clear, I like the syntax but I'm ambivalent towards reusing switch instead of which.)<br class=""><br class="">My minor suggestions would to avoid braces for things that aren't scopes; that either the comma or the the question mark is redundant in their current position (you need a start delimiter or an end delimiter but you don't need both); and that it needs a way to handle a default case if enumeration isn't exhaustive (I'd do that by returning an optional).<br class=""><br class=""><blockquote type="cite" class="">let i = which color (.Red: 0xff0000, .Green: 0x00ff00, .Blue: 0x0000ff) ?? 0x000000<br class=""></blockquote><br class=""><br class="">Thinking out loud, once you remove the question marks it really looks like a dictionary literal, so maybe it could even use square brackets to close the gap.<br class=""><br class=""><blockquote type="cite" class="">let i = which color [.Red: 0xff0000, .Green: 0x00ff00, .Blue: 0x0000ff] ?? 0x000000<br class=""></blockquote><br class=""><br class="">I thought about subscripting a dictionary literal in place:<br class=""><br class=""><blockquote type="cite" class="">[Color.Red: 0xff0000, ...][color] ?? 0x000000<br class=""></blockquote><br class=""><br class="">but that won't support elaborate pattern matching, and I think that this is a deal breaker for the functional folks.<br class=""><br class="">Félix<br class=""><br class=""><blockquote type="cite" class="">Le 22 déc. 2015 à 09:31:32, Charles Constant <<a href="mailto:charles@charlesism.com" target="_blank" class="">charles@charlesism.com</a>> a écrit :<br class=""><br class="">Just goofing on this a little. What if we called it a "which" statement, instead of a "switch" statement? It's a bit cutesy, but not too verbose, and it makes sense if you read it aloud.<br class=""><br class="">let i = which color {<br class=""><span style="white-space:pre-wrap" class="">        </span>? .Red: 0xFF0000,<span class=""> </span><br class=""><span style="white-space:pre-wrap" class="">        </span>? .Green: 0x00FF00,<span class=""> </span><br class=""><span style="white-space:pre-wrap" class="">        </span>? .Blue: 0x00000FF<br class="">}<br class=""><br class="">let i = which boo {<br class=""><span style="white-space:pre-wrap" class="">        </span>? true: 1,<span class=""> </span><br class=""><span style="white-space:pre-wrap" class="">        </span>? false: 0,<span class=""> </span><br class=""><span style="white-space:pre-wrap" class="">        </span>? nil: -1<br class="">}<br class=""><br class=""></blockquote><br class="">_______________________________________________<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" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class=""></div></div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=emrIhnP1hIf76Foxxv4NNJQX-2FWhcznESwKBSwD1MEwyE0wTxxNECMPPCzo-2FHTW73rbbjXg-2BkDsDXavGQRCH-2BQ3MVHuZZpqgJplv86uUZoGsXw4QiMMSHM7Rd5jhg7ISmdEVPAPcJGXs7M4iyRFt8uZ-2FU9A47RmlVFvFti5ZfpkwXHXu-2FstKfyhK3bAm7-2FBt9PJckFHcYKDhCLL-2FdK6cCrvhygEw9ZWe7EDng6hzlirg-3D" alt="" width="1" height="1" border="0" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;min-height:1px!important;width:1px!important;border-width:0px!important;margin:0px!important;padding:0px!important" class=""><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important" class=""><span class=""> </span></span><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important" class="">_______________________________________________</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important" class="">swift-evolution mailing list</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><a href="mailto:swift-evolution@swift.org" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank" class="">swift-evolution@swift.org</a><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""></div></div></blockquote></div><br class=""></div></div></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=Vm9j-2B2K6zLqxUFTO82XA8HV2TThDz5lA3-2F-2Fpeujw7DQEkp9mjyzfHAR4XgPFuHN2XaRHLRZW1wbv6LZQrFqjZJlLbSGf68eHT7iZYNk96tuSUvWNbb8w54JUZWrNiRQEC5LOtkR1g-2FQhP75yLKKU3tcapTgX3SQASR0yBPpBDSjT-2BeKMiZVO930f6F-2FXOs0TSngU8AAn-2Fh0boBjEKdW3LSIwNU3FDCSu1DeM7wQj5bU-3D" alt="" width="1" height="1" border="0" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;min-height:1px!important;width:1px!important;border-width:0px!important;margin:0px!important;padding:0px!important" class=""><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important" class=""><span class=""> </span></span><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important" class="">_______________________________________________</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important" class="">swift-evolution mailing list</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><a href="mailto:swift-evolution@swift.org" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank" class="">swift-evolution@swift.org</a><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></div></blockquote></div><br class=""></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=a745LmqnDfg8U5xkzxO94fzXSZ0ZB2d7MXjmVBHs4IEqFPgVTbqmkTi4uyiN-2FN0rnTRWDzr29rgvMQn664L5tFOomZlTTa646rMbxU-2BrZuD8u5byvxxSHivBZ0K0PmeGoGAsbZU7B-2FJl6mmqdapwX1v3C3qAwwO0PzLvR9-2FAdKIWK0LMAmxgruY4eBTOCrDvA-2BdyHUSCS-2F4AJ1MKe0IDuTGkvfLu6b-2FNS5ViSNOfpxM-3D" alt="" width="1" height="1" border="0" style="min-height:1px!important;width:1px!important;border-width:0px!important;margin:0px!important;padding:0px!important" class=""></div></blockquote><blockquote type="cite" class=""><div class=""><span class="">_______________________________________________</span><br class=""><span class="">swift-evolution mailing list</span><br class=""><span class=""><a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a></span><br class=""><span class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br class=""></div></blockquote></div></div></blockquote></div><br class=""></div></div></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=eLFMrKDT8iBxZ-2Fbnk-2BZqvSchNN-2FvYXdceA0T7VxwkAcKq0UrWwSlZRKFQwjnPJAPTHuhrLDVZ2hUg8hypT0Xrho4jLcUFlw-2FO0eYsEk-2FORRX99cWBsxeClNnA4pcpznMryqnceYMkutr9evlvTTn7IznZ4ASEgyoKpalCIoLBBdNV-2FUaZRqYKGnTHCXz2fhISAkG2TUVGK4KhspiewF4vvHyDTsKTR-2BNVnEGCrVRYOg-3D" alt="" width="1" height="1" border="0" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;min-height:1px!important;width:1px!important;border-width:0px!important;margin:0px!important;padding:0px!important" class=""><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important" class=""><span class=""> </span></span><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important" class="">_______________________________________________</span><span class=""><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important" class="">swift-evolution mailing list</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><a href="mailto:swift-evolution@swift.org" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank" class="">swift-evolution@swift.org</a><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span></div></blockquote></div><br class="">
<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=l3fs1g-2F466j3y5fD5Q61KddsTTCmXL0uxw3XoAMFFNiQX7lkAPj5mYeY-2Bokoh98A7ROmAYEUczmZ3BVkzuaz2sgBKQyPYSzeezuMvT235O-2FCJVLgL74MTuEfwgne7AslbhG-2Br4Nt6O-2Bmi31fDeJjyQ4YTxMZR7WrFDGwV-2FK-2Bdvl2uh-2FcX8yTrQylv8-2FhS-2FkDyk51GM31dsv9GqSXxC2aa96rMq65eOjBdKuCfZKIRS0-3D" alt="" width="1" height="1" border="0" style="min-height:1px!important;width:1px!important;border-width:0!important;margin-top:0!important;margin-bottom:0!important;margin-right:0!important;margin-left:0!important;padding-top:0!important;padding-bottom:0!important;padding-right:0!important;padding-left:0!important" class="">
</div>
<br class="">_______________________________________________<br class="">
swift-evolution mailing list<br class="">
<a href="mailto:swift-evolution@swift.org" 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="">
<br class=""></blockquote></div><br class=""></div>
</div></blockquote></div>
<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=1MXK54sosN3xru3iYcLt0oBZ2w20i49gyogXctgrspfec39Vq4QPyMgNvN3rjjoy8ryyzWW9P0CTnwS1TbTYqI308Q-2BV-2FfJhlT-2FQplAKixKB5VkWlG-2BLb2aMR5nUKDmtV7OIbsqf-2FmmWr8m-2FxxpmbHKqPj-2FjcNws-2FLt-2FWIfUoE7CfqNTjLqGV8hVLtJ1Ll1ioLDhY8ivwiy9oTI6VJoZABqvFOtU-2FIcqGbtDaZhCmrA-3D" alt="" width="1" height="1" border="0" style="height:1px !important;width:1px !important;border-width:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-right:0 !important;margin-left:0 !important;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important;padding-left:0 !important;" class="">
</div></blockquote><blockquote type="cite" class=""><div class=""><span class="">_______________________________________________</span><br class=""><span class="">swift-evolution mailing list</span><br class=""><span class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a></span><br class=""><span class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br class=""></div></blockquote></div></div></blockquote></div><br class=""></body></html>