@Xiaodi Wu a couple of times you've said things were "explicit" this or that. >* Swift is explicitly a C-family language. In most or all other C- >family languages, for loop statements allow specification of >conditions for exiting the loop but not for filtering. Therefore, >Swift's use of `where` is unprecedented and needs to be learned anew >by every user of Swift. > That is worrying if true, because it suggests that it's enabling > 'dialects' of Swift, an explicit anti-goal of the language Though I've never read either of these before as being goals (or for that matter anti-goals). Perhaps I'm looking in the wrong places though. Can you please share these with me? In trying to track that information down I read over https://swift.org/about/ trying to find if I could glean any information about some guiding principles. When I stumbled upon this and wondered if anyone else would find it illuminating. From the "Features" section: >Fast and concise iteration over a range or collection Does this proposal enhance that feature? Does this proposal weaken that feature? I've thought about that for a little bit and I'm pretty sure that removing `where` from for in certainly does not enhance that feature from my perspective. If I understand everything this all started because `if` can no longer have `where`. Following that and basing it completely on the example in this proposal (https://gist.github.com/erica/dd5935eca0d5d06b046184f41d56dd04#confusion-of-use) it seems to me that the behavior of the `where` clause of the `while` was analogous to the now removed `if` behavior. Therefore, if we are going to remove something lets remove the `where` clause from `while`. As is already correctly pointed out in the "confusion of use" section the outlier behavior was `for in`. We deprecated the `if` behavior because of [fill in the blank], forgive me I never read the arguments, if `while` works the same way why does it not logically follow that its `where` clause also be deprecated. With that as far as I'm concerned this proposal is just requesting the retirement of the `where` clause on the wrong loop structure. Of course more examples could change my mind.
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution