<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Jun 10, 2016 at 3:17 PM, Haravikk <span dir="ltr">&lt;<a href="mailto:swift-evolution@haravikk.me" target="_blank">swift-evolution@haravikk.me</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><span><br><div><blockquote type="cite"><div>On 10 Jun 2016, at 20:45, Xiaodi Wu &lt;<a href="mailto:xiaodi.wu@gmail.com" target="_blank">xiaodi.wu@gmail.com</a>&gt; wrote:</div><div><div dir="ltr" style="font-family:Helvetica;font-size:12px;font-style:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>I&#39;m sorry, but until this discussion I had never heard of a coding style that advocates for conservation of vertical space. There&#39;s a lot of argument whether 80 characters is still a relevant line length, but I&#39;ve never heard discussion that a single long line is better than multiple lines as a general principle.</div></div></div></div></div></blockquote></div><br></span><div>We’re not talking about a single super long line here, my actual uses of for in where don’t get much longer than the examples I’ve given, besides which the where keyword itself does a good job of breaking up the line into distinct pieces. Compared to say a long line full of chained .filter and .map or whatever it’s very clean.</div><div><br></div><div>At no point am I advocating shoving everything onto one line just for the sake of it, however, without a where clause a for in loop’s opening line tends to be very short so it leaves a nice chunk of extra space that’s ideal for a simple condition. Anything longer can, and absolutely should, span multiple lines in whatever form the developer prefers, no-one is suggesting that where clauses should remain in so we can ruin our code by shoving as much as possible on one line.</div></div></blockquote><div><br></div><div>Here, though emotion is hardly a worthy barometer, I had quite a visceral reaction to the example given at one point:</div><div><br></div><div>```</div><div><span style="color:rgb(80,0,80);font-size:12.8px">for number in fibonacci where number % 2 == 0 </span><span class="" style="color:rgb(80,0,80);font-size:12.8px;background-color:rgb(255,255,255)">while</span><span style="color:rgb(80,0,80);font-size:12.8px"> number &lt; 4_000_000 {...}</span><br></div><div>```</div><div><br></div><div>This, IMO, is long enough to cause a heart attack.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div>Regarding some of the numbers that have come up about for in vs for in where loops (in my own code I’m close to maybe of 20% of my for in loops using it), it’s important to recognise that the use of the where clause isn’t well advertised. When I started out with Swift I only knew that it could be used on cases in a switch statement, and later that it was used with complicated generics. It wasn’t until I joined the mailing list that I found out it could be used with conditional bindings and loops, but when I did I started using it almost immediately.<br></div></div></blockquote><div><br></div><div>Since it is so obscure, I think it&#39;d be fair to say that the feature is not fundamental to Swift&#39;s &quot;character&quot; or &quot;style.&quot; In fact, I understand that it was added only later. I could buy the argument that, if advertised widely, people would find ways to use it more widely and perhaps even generally correctly.</div><div><br></div><div>But it does show that (a) it&#39;s obscure; and (b) if it were never there, approximately no one outside this list would miss it. However, given that it is there, the large proportion of people who don&#39;t know of it are nonetheless liable to *read* it, and they stand a chance of misinterpreting its meaning on first reading. They may encounter it at any time, since it&#39;s a part of the language itself and not domain-specific, but they might well encounter this syntax only once in a blue moon and far into their time using the language. Thus, the need to weigh pros and cons here I think.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div>Plus a lot of developers are coming from other languages where nothing like this existed, so if they don’t discover it somewhere it’s not surprising if they don’t use it. Also, the important figures aren’t actually for in versus for in where, what’s needed is a count of for in where versus loops that use either if/guard continue (not break) or .filter() (i.e- only loops that <b>could</b> use a where clause but don’t).</div></div></blockquote><div><br></div><div>Right, that might be the more salient statistic.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word"><div>Most for in loops visit every element so it’s not surprising that they outnumber for in where by a large margin. I use it quite a bit in place of .filter(), and I’d use this form even more if there were a breaking alternative, I probably wouldn’t use a combined filtering and breaking version much though, but I wouldn’t be opposed to the possibility.</div></div></blockquote></div><br></div></div>