<div style="white-space:pre-wrap">It is of course true that all parts of a conditional statement have something in common with each other, namely that they are part of the same conditional statement.<br><br>A problem definitely exists with the current syntax, which is that the de minimis semantic relationship you are showing is not the relationship implied by the meaning of the word &quot;where.&quot;<br><br>It is acceptable to say, &quot;I will buy all the apples that are on sale, where the sale is 5% off or better.&quot; It is not acceptable to say, &quot;I will buy all the apples that are on sale, where my bike is large,&quot; even if it is true that you would only buy all the apples if you had a large bike to transport them home.<br></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Jun 1, 2016 at 11:50 Thorsten Seitz &lt;<a href="mailto:tseitz42@icloud.com">tseitz42@icloud.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div></div><div><br></div><div><br>Am 01.06.2016 um 03:47 schrieb Xiaodi Wu via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;:<br><br></div><blockquote type="cite"><div><div dir="ltr"><div>Revisiting this conversation, it seems that most of the design space has been thoroughly explored. I think all suggestions presented so far boil down to these:</div><div><br></div><div>Q: How is an arbitrary boolean assertion introduced after `if let`?</div><div><br></div><div>Option 1 (present scenario)--using `where`</div><div>Advantages: expressive when it means exactly the right thing</div><div>Drawbacks: makes obligatory the suggestion of a semantic relationship between what comes before and after even when there is no such relationship</div></div></div></blockquote><div><br></div></div><div dir="auto">Haravikk already demonstrated that a semantic relationship always exists in the sense of &quot;bind this variable for all caes where the following condition holds&quot;.<div><br></div><div>So, the perceived problem with the `where` clause does not exist.</div></div><div dir="auto"><div><br></div><div>-Thorsten¬†</div><div><br></div></div><div dir="auto"><div><br><blockquote type="cite"><div><div dir="ltr"><div><br></div><div>Option 2--using a symbol sometimes encountered in conditional statements (e.g. `&amp;&amp;` or comma)</div><div>Advantages: doesn&#39;t look out of place</div><div>Drawbacks: needs to be disambiguated from existing uses, necessitating other changes in syntax</div><div><br></div><div>Option 3--using a symbol never encountered in conditional statements (e.g. semicolon)</div><div>Advantages: doesn&#39;t need to be disambiguated from any existing uses</div><div>Drawbacks: looks out of place</div><div><br></div><div>For me, options 1 and 2 have permanent and objective drawbacks. By contrast, familiarity increases with time, and beauty is in the eye of the beholder.</div><div><br></div><div>* * *</div><div><br></div><div>It does occur to me that there is one more option. I don&#39;t know that I like it, but it&#39;s an option no one has put forward before: recite the opening keyword when beginning a new boolean expression:</div><div><br></div><div>`if let x = x where x &lt; 3 { ... }` becomes</div><div>`if let x = x if x &lt; 3 { ... }`</div><div><br></div><div>`while let item = sequence.next() where item &gt; 0 { ... }` becomes</div><div>`while let item = sequence.next() while item &gt; 0 { ... }`</div><div><br></div><div>etc.</div><div><br></div><div><br></div>On Tue, May 31, 2016 at 2:00 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"><span><br>
&gt; On May 31, 2016, at 12:52 PM, Xiaodi Wu &lt;<a href="mailto:xiaodi.wu@gmail.com" target="_blank">xiaodi.wu@gmail.com</a>&gt; wrote:<br>
&gt; These lines of reasoning are what have compelled me to conclude that `where` might not be salvageable.<br>
<br>
</span>To which, I&#39;d add: `where` suggests there&#39;s a subordinate and semantic relationship between the primary condition and the clause. There&#39;s no way as far as I know this to enforce it in the grammar and the proposal allows both clauses to be stated even without the connecting word. You could make a vague argument, I suppose, for renaming `where` to `when` but all in all, even killing `where` we benefit with better expressive capabilities and a simpler grammar.<br>
<span><font color="#888888"><br>
-- E<br>
<br>
</font></span></blockquote></div><br></div></div>
</div></blockquote></div></div><div dir="auto"><div><blockquote type="cite"><div><span>_______________________________________________</span><br><span>swift-evolution mailing list</span><br><span><a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a></span><br><span><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br></div></blockquote></div></div></blockquote></div>