<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=""><div class=""><blockquote type="cite" class=""><span class="" style="display: inline !important;">But isn’t that more a sign that Swift needs a way to make closures more useful by adding the possibility of breaking/continueing/returning from within them rather than a disadvantage of the `times`-syntax itself?</span></blockquote><br class=""></div><div class="">Perhaps — there’s a thread, somewhere, with possible solutions to this.</div><div class=""><br class=""></div><div class="">FWIW, I’m just as concerned about allowing returning/etc in closures, as with the lack of this ability. Ruby has different forms of “closures”, far too many of them actually, and some of them truly act like functions (just like in Swift), and in some, return/etc changes the calling function. And… albeit useful… this can be _really_ confusing.</div><div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><div class="">Do you think `times` wouldn’t be useful enough with the closure restriction?</div></blockquote><br class=""></div><div class="">I’d still like it, but it’s just this tiny little thing. Swift standard library is currently very bare-bones, unlike, say, Ruby’s, which has *a ton* of stuff on Arrays, Strings, etc. Unless the Core Team is OK with expanding those standard types with more useful helper methods more broadly, there’s no reason why `times` in particular should go in.</div><div class=""><br class=""></div><div class="">/ccing Chris on this question.</div><div class=""><br class=""></div><div class="">
<div class="">— Radek</div>
</div>
<br class=""><div><blockquote type="cite" class=""><div class="">On 18 Dec 2015, at 21:09, Cihat Gündüz via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">@Jacob, @Radek: Seems like you’ve found a clear restriction to the methods usefulness given a simple implementation. You are right, of course. But isn’t that more a sign that Swift needs a way to make closures more useful by adding the possibility of breaking/continueing/returning from within them rather than a disadvantage of the `times`-syntax itself?</span><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br class=""></div><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">I mean, I find the closure-solution useful already. But if break/continue/return would work from within the curly braces somehow (either by a non-closure-based implementation like for-in loops or via a future addition of some kind of strong/weak return etc.) then I agree that it would be even more useful.</div><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br class=""></div><div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">Do you think `times` wouldn’t be useful enough with the closure restriction?<br class=""><div class=""><br class=""></div><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">Am 18.12.2015 um 20:53 schrieb Jacob Bandes-Storch &lt;<a href="mailto:jtbandes@gmail.com" class="">jtbandes@gmail.com</a>&gt;:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">I like how clean "100.times { doSomething() }" looks, but I'm concerned its usefulness will be limited because control-flow statements like break/continue/return won't work from inside a closure.<div class="gmail_extra"><br clear="all" class=""><div class=""><div class="gmail_signature"><div dir="ltr" class=""><div class="">Jacob<br class=""></div></div></div></div><br class=""><div class="gmail_quote">On Fri, Dec 18, 2015 at 11:36 AM, Cihat Gündüz<span class="Apple-converted-space">&nbsp;</span><span dir="ltr" class="">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt;</span><span class="Apple-converted-space">&nbsp;</span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"><div class="" style="word-wrap: break-word;"><br class=""><div class=""><span class=""><blockquote type="cite" class=""><div class="">Am 18.12.2015 um 20:13 schrieb Félix Cloutier &lt;<a href="mailto:felixcca@yahoo.ca" target="_blank" class="">felixcca@yahoo.ca</a>&gt;:</div><br class=""><div class=""><div class="" style="word-wrap: break-word;">It doesn't need to be an underscore, but when it is not, the compiler emits an educative warning steering you towards _:</div></div></blockquote><div class=""><br class=""></div></span><div class="">It’s not about the underscore as a character, it’s about the fact that there is the clutter of an underscore at all what I don’t like and what makes me feel the code isn’t as clean as it could be.</div><span class=""><br class=""><blockquote type="cite" class=""><div class=""><div class="" style="word-wrap: break-word;"><div class=""><br class=""></div><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Consolas;"><b class="">/tmp/test.swift:3:7:<span class="Apple-converted-space">&nbsp;</span></b><span class="" style="color: rgb(168, 55, 165);"><b class="">warning:<span class="Apple-converted-space">&nbsp;</span></b></span><b class="">immutable value 'i' was never used; consider replacing with '_' or removing it</b></div></div><div class=""><br class=""></div><div class="">You can also use inclusive ranges instead if you're more comfortable with that: 1...5000 will do just that.</div></div></div></blockquote><div class=""><br class=""></div></span><div class="">I’m comfortable with ranges but I also used to teach Java back a few years ago and I saw computer science students struggle with the exact number a loop was being executed. So that’s the only reason I brought up that example to have an additional argument.</div><div class=""><br class=""></div><div class="">But again, for me it is more about the clutter that the 1… or 0..&lt; adds to something that could so easily made simpler and more descriptive.</div><div class=""><br class=""></div><div class="">I think this is also a question of:<span class="Apple-converted-space">&nbsp;</span><i class="">How many convenience methods do we want to see in the Swift standard library?</i><span class="Apple-converted-space">&nbsp;</span>In Ruby, at least, there seemed to be enough people to find this one useful. And it’s the first method I missed until now, so I took that as a sign before suggesting the addition. I also don’t like when there are thousands of convenience methods for things that could easily be written in other ways – but I don’t feel that way with the suggested .times method.</div><span class=""><br class=""><blockquote type="cite" class=""><div class=""><div class="" style="word-wrap: break-word;"><div class=""><br class=""></div><div class="">I don't mean to come across as dismissive, and I'm all for an inclusive Swift that you can pick up without knowing advanced concepts. However, there is definitely value in helping people learn, and learning always moves you a little bit out of your comfort zone. When do we remove the training wheels? How long can we hide the fact that indices usually start at 0? How long before you need to iterate an array using the same range-based for loop?</div><div class=""><br class=""></div><div class="">I spend a lot of time on Stack Overflow and I've seen lots of beginners ask for lots of things, but the people who ask about the for loop are usually people with a background in another C-like language who try to use the arguably less readable C-like for loop. I've never seen anyone before say that it looks unclean or unreadable.</div></div></div></blockquote><div class=""><br class=""></div></span><div class="">I understand what you mean but I don’t think that this is about indices or beginners. The fact that readability and expressiveness make a language easier to learn for beginners IMHO is just a side effect of a well thought-out and developed language. Maybe I wasn’t clear enough but I want to see the .times method in Swift for my own usage, not for beginners. :)</div><div class=""><div class="h5"><br class=""><blockquote type="cite" class=""><div class=""><div class="" style="word-wrap: break-word;"><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">Le 18 déc. 2015 à 13:38:59, Cihat Gündüz via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt; a écrit :</div><br class=""><div class=""><span class="" style="font-family: LucidaGrande; 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;">I agree with both of you about the alternative implementations.</span><div class="" style="font-family: LucidaGrande; 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;"><br class=""></div><div class="" style="font-family: LucidaGrande; 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;">That’s exactly what I’d love to see integrated to the standard library like Ruby is here:<div class=""><a href="http://ruby-doc.org/core-2.2.4/Integer.html#method-i-times" target="_blank" class="">http://ruby-doc.org/core-2.2.4/Integer.html#method-i-times</a></div><div class=""><br class=""></div><div class="">My main problem is that it neither looks<span class="">&nbsp;</span><b class="">clean</b><span class="">&nbsp;</span>nor<span class="">&nbsp;</span><b class="">readable</b><span class="">&nbsp;</span>especially for beginners that there is an<span class="">&nbsp;</span><i class="">underscore</i><span class="">&nbsp;</span>in the closure. Also beginners often get confused with the number of times some code is run when<span class="">&nbsp;</span><i class="">starting to count from 0</i><span class="">&nbsp;</span>which is also why I think it shouldn’t appear. The .times method would solve both of these problems.</div><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">Am 18.12.2015 um 19:33 schrieb Etan Kissling &lt;<a href="mailto:kissling@oberon.ch" target="_blank" class="">kissling@oberon.ch</a>&gt;:</div><br class=""><div class=""><div class="" style="word-wrap: break-word;">(or with a for in loop &nbsp;-- but i guess you have a reason for using .foreach)<div class=""><br class=""></div><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class="" style="color: rgb(187, 44, 162);">for</span><span class="">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">_</span><span class="">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">in</span><span class="">&nbsp;</span><span class="" style="color: rgb(39, 42, 216);">0</span>..&lt;<span class="" style="color: rgb(39, 42, 216);">5_000</span><span class="">&nbsp;</span>{</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="">&nbsp;</span><span class="" style="color: rgb(61, 29, 129);">print</span>(<span class="" style="color: rgb(209, 47, 27);">"asdf"</span>)</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>}</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><div class="">On 18 Dec 2015, at 19:31, Etan Kissling via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class=""><div class=""><div class="" style="word-wrap: break-word;"><div class="">You don't need stride for this.</div><div class=""><br class=""></div><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp;&nbsp;<span class="" style="color: rgb(187, 44, 162);">func</span><span class="">&nbsp;</span>foo() {</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>(<span class="" style="color: rgb(39, 42, 216);">0</span>..&lt;<span class="" style="color: rgb(39, 42, 216);">5_000</span>).<span class="" style="color: rgb(61, 29, 129);">forEach</span><span class="">&nbsp;</span>{<span class="">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">_</span><span class="">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">in</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="">&nbsp;</span><span class="" style="color: rgb(61, 29, 129);">print</span>(<span class="" style="color: rgb(209, 47, 27);">"asdf"</span>)</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>}</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>}</div></div><div class=""><br class=""></div><br class=""><div class=""><blockquote type="cite" class=""><div class="">On 18 Dec 2015, at 19:25, Cihat Gündüz via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class=""><div class=""><div class="" style="word-wrap: break-word;">Dear Swift-Community,<div class=""><br class=""></div><div class="">I’d like to propose an<span class="">&nbsp;</span><b class="">addition of a useful method</b>, especially for beginners that also makes Swift much more readable in some situations: The addition of a .times method to Integer type(s).</div><div class=""><br class=""></div><div class="">For example recently in one of my projects I wanted to test the scalability of an important piece of code and wrote this method:</div><div class=""><br class=""></div><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp;<span class="">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">func</span><span class="">&nbsp;</span>testPerfQualityInPercentWithoutQualityImprovements() {</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(49, 89, 93);"><span class="">&nbsp; &nbsp; &nbsp; &nbsp;<span class="">&nbsp;</span></span><span class="" style="color: rgb(187, 44, 162);">self</span><span class="">.</span>measureBlock<span class=""><span class="">&nbsp;</span>{</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">let</span><span class="">&nbsp;</span>expectedQuality =<span class="">&nbsp;</span><span class="" style="color: rgb(39, 42, 216);">33.33</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="">&nbsp;</span><span class="" style="color: rgb(39, 42, 216);">0</span>.<span class="" style="color: rgb(61, 29, 129);">stride</span>(to:<span class="">&nbsp;</span><span class="" style="color: rgb(39, 42, 216);">5_000</span>, by:<span class="">&nbsp;</span><span class="" style="color: rgb(39, 42, 216);">1</span>).<span class="" style="color: rgb(61, 29, 129);">forEach&nbsp;</span>{<span class="">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">_</span><span class="">&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">in</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="">&nbsp;</span><span class="" style="color: rgb(49, 89, 93);">XCTAssertEqualWithAccuracy</span>(<span class="" style="color: rgb(187, 44, 162);">self</span>.<span class="" style="color: rgb(79, 129, 135);">crossword</span>.<span class="" style="color: rgb(79, 129, 135);">qualityInPercent</span>, expectedQuality, accuracy:<span class="">&nbsp;</span><span class="" style="color: rgb(39, 42, 216);">0.1</span>) &nbsp;&nbsp;</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>} &nbsp;&nbsp;</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>}</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>}</div></div><div class=""><br class=""></div><div class="">As you can see what I basically wanted was to repeat the test some thousand times. I also like to use the Ruby language and one thing I love about it is that it has some really handy methods integrated to the language in situations like this which make the code very readable and therefore fun to use.</div><div class=""><br class=""></div><div class="">I’m an even bigger fan of Swift so I’d love to see such useful methods appear in Swift, too and this is the first I came across that I really missed. So I’m asking myself, what if I could write the same code above like this:</div><div class=""><br class=""></div><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp;&nbsp;<span class="" style="color: rgb(187, 44, 162);">func</span>&nbsp;testPerfQualityInPercentWithoutQualityImprovements() {</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(49, 89, 93);"><span class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span class="" style="color: rgb(187, 44, 162);">self</span><span class="">.</span>measureBlock<span class="">&nbsp;{</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class="" style="color: rgb(187, 44, 162);">let</span>&nbsp;expectedQuality =&nbsp;<span class="" style="color: rgb(39, 42, 216);">33.33</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class="" style="color: rgb(39, 42, 216);">5_000.times {</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span class="" style="color: rgb(49, 89, 93);">XCTAssertEqualWithAccuracy</span>(<span class="" style="color: rgb(187, 44, 162);">self</span>.<span class="" style="color: rgb(79, 129, 135);">crossword</span>.<span class="" style="color: rgb(79, 129, 135);">qualityInPercent</span>, expectedQuality, accuracy:&nbsp;<span class="" style="color: rgb(39, 42, 216);">0.1</span>) &nbsp;&nbsp;</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>} &nbsp;&nbsp;</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;}</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>}</div></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><br class=""></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-family: Helvetica; font-size: 12px;">I think it could be added to the Swift standard library very easily (for example by using the .stride method like I used) without any side effects and has enough advantages to be part of Swift itself. What do you think?</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-family: Helvetica; font-size: 12px;"><br class=""></span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-family: Helvetica; font-size: 12px;">I wish you all the best,</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-family: Helvetica; font-size: 12px;">Cihat</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-family: Helvetica; font-size: 12px;"><br class=""></span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-family: Helvetica; font-size: 12px;"><br class=""></span></div><div class="" style="margin: 0px; line-height: normal;">P.S.: This is my very first mail in such a mailing list so I did everything correctly. ^.^</div><div class="" style="margin: 0px; line-height: normal;"><br class=""></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=tTTJ5sn5y0uc3ODSZa-2BndLNwXCDS7T2cq5OlDDhG0Rv24uhtvYv57b57RThnoUBESAxxMDy12HfxuT9sf9VVp3u-2BljgFoOV9Ju-2BtFhXXJ1d8nr-2FYw-2FUNbKUk26rHfCj9zunav26wrq76QmN2VjrXsxpGqGynDLjQOq3xzG0kPrAlahxwYVVKYxWr-2FixGS8o60s13y8Z-2BEl3Y7elh5Tr-2F9t3iW87Nn3MFjpz-2FOHvhx30-3D" alt="" width="1" height="1" border="0" class="" style="min-height: 1px !important; width: 1px !important; border-width: 0px !important; margin: 0px !important; padding: 0px !important;"></div>_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class=""></div></blockquote></div><br class=""><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=tTTJ5sn5y0uc3ODSZa-2BndLNwXCDS7T2cq5OlDDhG0Rudyoy59P95VIFCXE8vsNIm3CRv2xeSfRQi24G3J7csJAwXsAU0KgdqyUmTpkPgjbX8d25r2mfuva9tzq-2FUDdol4HlpIh-2BHPdrv3VJ3o4xk2ghsZ6aTSUz-2FXhHLeKnEcHzsL3XLw-2F2NTNaky7syxtgWh87TGLUN5goHMjwNXVFxk5QMxUtPLGjvJKyN7d4juEc-3D" alt="" width="1" height="1" border="0" class="" style="min-height: 1px !important; width: 1px !important; border-width: 0px !important; margin: 0px !important; padding: 0px !important;"></div>_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class=""></div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""></div></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=iRI3beHTe3UxYAHTlV3lA38zIPfHMhyuRzgTmGKV6k5S-2FLtOx-2BROGe-2FfDGB7KyDwaSL5P9-2BQYbNCvB4d-2Fg-2FAGO-2B8G50u32Zw385KkcxuO7qNmVKW7I496YMBCouPCudO5YM5ndlvKpCwHuceW-2Boheqo2q1GmMyZY721sY1RDE5zaf7YsPX0tvelGghtlQo-2FsN05fW0bSNYDKsb0crPSrfCPGkrcYKe4OfQ-2Fe9zOVsXs-3D" alt="" width="1" height="1" border="0" class="" style="font-family: LucidaGrande; 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;"><span class="" style="font-family: LucidaGrande; 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;"><span class="">&nbsp;</span></span><span class="" style="font-family: LucidaGrande; 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;">_______________________________________________</span><br class="" style="font-family: LucidaGrande; 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;"><span class="" style="font-family: LucidaGrande; 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;">swift-evolution mailing list</span><br class="" style="font-family: LucidaGrande; 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;"><a href="mailto:swift-evolution@swift.org" target="_blank" class="" style="font-family: LucidaGrande; 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;">swift-evolution@swift.org</a><br class="" style="font-family: LucidaGrande; 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;"><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank" class="" style="font-family: LucidaGrande; 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;">https://lists.swift.org/mailman/listinfo/swift-evolution</a></div></blockquote></div><br class=""></div></div></div></blockquote></div></div></div><br class=""><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=P-2BsYbBZHRBuLDBJaL4DIKDNfkkjpROowTyRAObV11qz30h3cpkMMxhivEnrd0XfrbYGIeY1enyDmgOsAs-2B0eo2fnrzNXqVVFe1DvcBbmaIr0Y7tsJfMylPSDLFumCJDxjA-2Bk2RpYVv92dgUbgmknSgJmYLx5ZtpN-2B-2Blzvqj6Cw0IrboApkpaYbFgP7Oe1cIYQY5XLDjSms6Z3XTqiVaBA8HLoP8IFe8xWRoLGytHAok-3D" alt="" width="1" height="1" border="0" class="" style="min-height: 1px !important; width: 1px !important; border-width: 0px !important; margin: 0px !important; padding: 0px !important;"></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></blockquote></div></div></div></div></blockquote></div><br class=""></div></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=4hhvaxvZNsLrnZM9llg93kxoqfFYC8lhv8HAehOIDqI6xzfJpqCb2ip6oi-2F4A0JCmcYMCO-2B6sGXNQhb02LfyCaKQyD4jVjAr5FUKZf5OCFyva3veFlM6eM6-2BdvafRPeo9UYrO745EyTn8bbgGvjRghYs5dpNkQiBbYKqvRLajFieb-2B2hjOnyj9AhVAM1etWgK-2FuMe0wLmuWiiZUP7hYk5alFurCDD2m-2BYNBCRReCHaA-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; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; 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; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class=""><span class="Apple-converted-space">&nbsp;</span></span><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 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; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 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; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 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; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" 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; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 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; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></div></blockquote></div><br class=""></body></html>