[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