[swift-evolution] [Pitch] Retiring `where` from for-in loops

David Sweeris davesweeris at mac.com
Tue Jun 14 15:53:24 CDT 2016


> On Jun 8, 2016, at 10:51 PM, Erica Sadun via swift-evolution <swift-evolution at swift.org> wrote:
> 
>> 
>> On Jun 8, 2016, at 9:36 PM, Brent Royal-Gordon <brent at architechies.com <mailto:brent at architechies.com>> wrote:
>> 
>>> Upon accepting SE-0099, the core team is removing `where` clauses from condition clauses, writing "the 'where' keyword can be retired from its purpose as a boolean condition introducer." 
>>> 
>>> Inspiried by Xiaodi Wu, I now propose removing `where` clauses from `for in` loops, where they are better expressed (and read) as guard conditions. 
>> 
>> Do you propose to remove `for case` as well? That can equally be handled by a `guard case` in the loop body.
>> 
>> Alternate proposal: Move `where` clauses to be adjacent to the pattern—rather than the sequence expression—in a `for` loop, just as they are in these other syntaxes.
>> 
>> 	for n where n.isOdd in 1...1_000 { … }
>> 
>> This makes them more consistent with the syntax in `switch` cases and `catch` statements, while also IMHO clarifying the role of the `where` clause as a filter on the elements seen by the loop.
> 
> I saw your post on that *after* I finished sending this. Moving `where` next to the pattern, like you'd find in `catch` and switch `case`, the code would look like this:
> 
> for i where i % 2 == 0 in sequence {
>     // do stuff
> }

What about just this?
for i % 2 == 0 in sequence { ... }

The first new identifier gets to be the index variable and subsequent new identifiers are errors.

- Dave Sweeris

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160614/8bf06e1c/attachment.html>


More information about the swift-evolution mailing list