[swift-evolution] [Pitch] Retiring `where` from for-in loops
Christopher Kornher
ckornher at me.com
Fri Jun 10 14:52:10 CDT 2016
> On Jun 10, 2016, at 12:09 PM, Vladimir.S via swift-evolution <swift-evolution at swift.org> wrote:
>
> 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.
Programming styles are not dialects.
>>
>>
>>
>> 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
>>
> _______________________________________________
> 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