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

let var go letvargo at gmail.com
Fri Jun 10 12:10:18 CDT 2016


Leave it in!

It's a great little tool. I don't use it very often, but when I do it is
because I've decided that in the context of that piece of code it does
exactly what I want it to do with the maximum amount of clarity.

If you don't like it, then don't use it, but I can't see how it detracts
from the language at all.

The *only* argument that I have heard for removing it is that some people
don't immediately intuit how to use it. I didn't have any trouble with it
at all. It follows one of the most basic programming patterns ever: "For
all x in X, if predicate P is true, do something." The use of the keyword
"where" makes perfect sense in that context, and when I read it out loud,
it sounds natural: "For all x in X where P, do something." That is an
elegant, succinct, and clear way of stating exactly what I want my program
to do.

I don't doubt that it has caused some confusion for some people, but I'm
not sold that that is a good enough reason to get rid of it. It seems
strange to get rid of a tool because not everyone understands how to use it
immediately, without ever having to ask a single question. As long as its
not a dangerous tool (and it isn't), then keep it in the workshop for those
times when it comes in handy. And even if there is some initial confusion,
it doesn't sound like it lasted that long. It's more like, "Does this work
like X, or does this work like Y? Let's see...oh, it works like X. Ok."
That's the entire learning curve...about 5 seconds of curiosity followed by
the blissful feeling of resolution.

On Fri, Jun 10, 2016 at 9:32 AM Xiaodi Wu via swift-evolution <
swift-evolution at swift.org> wrote:

> On Fri, Jun 10, 2016 at 11:23 AM, Sean Heber via swift-evolution <
> swift-evolution at swift.org> wrote:
>
>> > And to follow-up to myself once again, I went to my "Cool 3rd Party
>> Swift Repos" folder and did the same search. Among the 15 repos in that
>> folder, a joint search returned about 650 hits on for-in (again with some
>> false positives) and not a single for-in-while use.
>>
>> Weird. My own Swift projects (not on Github :P) use “where” all the time
>> with for loops. I really like it and think it reads *and* writes far better
>> as well as makes for nicer one-liners. In one project, by rough count, I
>> have about 20 that use “where” vs. 40 in that same project not using
>> “where”.
>>
>> In another smaller test project, there are only 10 for loops, but even so
>> one still managed to use where.
>>
>> Not a lot of data without looking at even more projects, I admit, but
>> this seems to suggest that the usage of “where” is going to be very
>> developer-dependent. Perhaps there’s some factor of prior background at
>> work here? (I’ve done a lot of SQL in another life, for example.)
>>
>
> That is worrying if true, because it suggests that it's enabling
> 'dialects' of Swift, an explicit anti-goal of the language.
>
>
>>
>> I feel like “where” is a more declarative construct and that we should be
>> encouraging that way of thinking in general. When using it, it feels like
>> “magic” for some reason - even though there’s nothing special about it. It
>> feels like I’ve made the language work *for me* a little bit rather than me
>> having to contort my solution to the will of the language. This may be
>> highly subjective.
>>
>> l8r
>> Sean
>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160610/8b049d74/attachment.html>


More information about the swift-evolution mailing list