<div style="white-space:pre-wrap">You&#39;re describing a while loop:<br>`while let element = sequence.next() where condition {...}`<br><br>Which as we&#39;ve discussed can already be re-written with a for loop (which, yes, can be lazy):<br>`for element in sequence.lazy.filter({ condition }) {...}`<br><br>And it can be explicitly spelled out inside the loop, a definite readability gain for the same reason guard always requires an explicit else block.<br><br>What do you gain with a new keyword?<br></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jun 7, 2016 at 05:02 Haravikk via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I’m a +1 for this idea. Like Thorsten I was initially a little concerned that while and where may look too similar, but actually I find them visually distinct enough, and actually in my code I’m probably more likely to use while than where on for loops, although both are useful.<br>
<br>
&gt; On 6 Jun 2016, at 11:15, Tim Vermeulen via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt; We can already use a where clause in a for loop like this:<br>
&gt;<br>
&gt; for element in array where someCondition(element) {<br>
&gt;    // …<br>
&gt; }<br>
&gt;<br>
&gt; which basically acts like<br>
&gt;<br>
&gt; for element in array {<br>
&gt;    guard someCondition(element) else { continue }<br>
&gt;    // …<br>
&gt; }<br>
&gt;<br>
&gt; Sometimes you want to break out of the loop when the condition isn’t met instead. I propose a while clause:<br>
&gt;<br>
&gt; for element in array while someCondition(element) {<br>
&gt;    // …<br>
&gt; }<br>
&gt;<br>
&gt; which would be syntactic sugar for<br>
&gt;<br>
&gt; for element in array {<br>
&gt;    guard someCondition(element) else { break }<br>
&gt;    …<br>
&gt; }<br>
&gt;<br>
&gt; I can see this particularly being useful if we have a sorted array and we already know that once the condition isn’t met, it won’t be met either for subsequent elements. Another use case could be an infinite sequence that we want to cut off somewhere (which is simply not possible using a where clause).<br>
&gt; _______________________________________________<br>
&gt; swift-evolution mailing list<br>
&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div>