<div dir="ltr">On Fri, Jun 24, 2016 at 4:33 PM, Erica Sadun <span dir="ltr">&lt;<a href="mailto:erica@ericasadun.com" target="_blank">erica@ericasadun.com</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><span class=""><blockquote type="cite"><div>On Jun 24, 2016, at 12:04 AM, Xiaodi Wu &lt;<a href="mailto:xiaodi.wu@gmail.com" target="_blank">xiaodi.wu@gmail.com</a>&gt; wrote:</div><br><div><div dir="ltr">On Fri, Jun 24, 2016 at 12:59 AM, William Shipley via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Here are some of my real-world examples:<div><br></div><div><div style="margin:0px;line-height:normal"><span>        </span><span style="color:#bb2ca2">for</span><span> modelUUIDAndInterfaceElement </span><span style="color:#bb2ca2">in</span><span> </span><span style="color:#4f8187">modelUUIDsToInterfaceElements</span><span> </span><span style="color:#bb2ca2">where</span><span> !usedInterfaceElements.</span><span style="color:#3d1d81">contains</span><span>(modelUUIDAndInterfaceElement.</span><span style="color:#272ad8">1</span><span>) {</span></div></div></div></blockquote><div><br></div><div>Not a practitioner of 80-character line limits, I take it?</div></div></div></div></div></blockquote><div><br></div></span>80-character line limits aren&#39;t why these examples  are problematic for me.</div></div></blockquote><div><br></div><div>Sorry, I&#39;m going to selfishly interject here to clarify what I meant by that question to Wil.</div><div><br></div><div>I was not implying that his code was problematic for me--far be it from me to critique Wil&#39;s code or style, a task for which I&#39;m not qualified. And I&#39;m truly appreciative that Wil was willing to share his code so that we could learn about the use of `where` in closed-source contexts.</div><div><br></div><div>The point I was trying to bring up was that a purported advantage of keeping `where` is moot for those who *do* observe line limits, which includes the Swift stdlib itself as well as (IIUC) house style at Google, Microsoft, etc.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Other than a few positive examples like this wall.anchors one, </div><div><span class=""><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> <span>        </span><span style="color:rgb(187,44,162)">for</span><span> anchor </span><span style="color:rgb(187,44,162)">in</span><span> wall.</span><span style="color:rgb(79,129,135)">anchors</span><span> </span><span style="color:rgb(187,44,162)">where</span><span> boundsRect.</span><span style="color:rgb(61,29,129)">contains</span><span>(anchor.</span><span style="color:rgb(79,129,135)">origin</span><span>) {</span></div></div></div></div></blockquote><div><br></div></span><div>most of these read as if there is too much logic stuffed into a single line:</div><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><span class=""><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><span style="color:rgb(187,44,162)">for</span> otherWall: <span style="color:rgb(79,129,135)">Wall</span> <span style="color:rgb(187,44,162)">in</span> <span style="color:rgb(187,44,162)">self</span> <span style="color:rgb(187,44,162)">where</span> otherWall != wall &amp;&amp; !removedWalls.<span style="color:rgb(61,29,129)">contains</span>(otherWall) {</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><br></div></blockquote></span><span class=""><div><span><div style="margin:0px;line-height:normal">        <span style="color:rgb(187,44,162)">for</span> otherPieceOfFurnitureNode <span style="color:rgb(187,44,162)">in</span> localFurnitureModelUUIDsToInterfaceElements!.<span style="color:rgb(112,61,170)">values</span> <span style="color:rgb(187,44,162)">where</span> otherPieceOfFurnitureNode !== pieceOfFurnitureNode {</div></span></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><span><div><br></div></span></div></blockquote><div><span><div><span>        <span style="color:#bb2ca2">for</span> lineSegmentObject <span style="color:#bb2ca2">in</span> wallRelatedLineSegments <span style="color:#bb2ca2">where</span> remainingLineSegments.<span style="color:#3d1d81">contains</span>(lineSegmentObject) {</span></div></span></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><span><div><br></div></span></div></blockquote><div><span><div><span>        <span style="color:#bb2ca2">for</span> colinearLineSegmentObject <span style="color:#bb2ca2">in</span> remainingLineSegments <span style="color:#bb2ca2">where</span> colinearLineSegmentObject.<span style="color:#4f8187">angle</span>.<span style="color:#31595d">isEssentially</span>(infiniteLineAngle: lineSegmentObject.<span style="color:#4f8187">angle</span>) {</span></div></span></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><span><div>…</div></span></div></blockquote></span></div></blockquote></div></div></div></blockquote><span class="HOEnZb"><font color="#888888"><br></font></span></div><span class="HOEnZb"><font color="#888888"><div>-- E</div><div><br></div><br></font></span></div></blockquote></div><br></div></div>