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

Vladimir.S svabox at gmail.com
Fri Jun 10 13:09:46 CDT 2016


I don't think the 'where' in 'for' loop adds another dialect of Swift more 
than using of [Int] vs Array<Int> or shorthand syntax for Optionals adds 
it. (in addition to 'guard' vs 'if')
So, it's just an opinion if 'where' in 'for' loop introduces new dialect or 
if it is a handy feature that can be used when it best suits the needs in 
some situation or even a metter of style(like [Int] vs Array<Int> or using 
.forEach vs for-in etc).

On 10.06.2016 20:17, Xiaodi Wu via swift-evolution wrote:
> I think this idea--if you don't like it, then you don't have to use it--is
> indicative of a key worry here: it's inessential to the language and
> promotes dialects wherein certain people use it and others wherein they
> don't. This is an anti-goal.
>
> On Fri, Jun 10, 2016 at 12:10 let var go <letvargo at gmail.com
> <mailto:letvargo at gmail.com>> wrote:
>
>     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 <mailto: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 <mailto: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 <mailto:swift-evolution at swift.org>
>             https://lists.swift.org/mailman/listinfo/swift-evolution
>
>         _______________________________________________
>         swift-evolution mailing list
>         swift-evolution at swift.org <mailto: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
>


More information about the swift-evolution mailing list