On Mon, Jun 13, 2016 at 8:16 AM, Brandon Knope <bkn...@me.com> wrote:
> Are you really surprised that some people don't want this taken away? > Nope, that's to be expected. > The burden should be on those that want it taken out of the language and > not those that want it kept. After all something is being removed and it > should be a delicate process. > Agreed. We who think it's better to take this syntax out have advanced an argument with several prongs. Namely, that the `where` clause serves no independent purpose; that a more general solution has already been added to the language (as well as another in the stdlib); that the `where` clause is not necessary for progressive disclosure to new users before they're ready for the general solution; that it is, at present, rarely used in practice; that it has no analog in other commonly used general purpose languages in the C family; that it is the remnant of a direction in which the core team later decided not to pursue; and that, given its lack of utility, lack of use, and vestigial state, being the cause of confusion even among a small number of users (if their number be small) is grounds to conclude that it is harmful to the language and therefore ought to be removed. > Don't be surprised when the defenders say it is more readable to them. > That is a *sound* argument in my opinion. > IMO, it cannot stand on its own as a complete argument for saving a feature in the face of the arguments we've advanced. Couldn't you say the same for `++` or `for;;` loops? I'd say our case is at least as strong as that for `for;;` loops. By comparison, if I recall, the `for;;` loop was argued to be ill-fitting the rest of the language and lacking in usage, but it certainly had utility independent of `for...in` loops and was well precedented in C languages. > > Brandon > > Sent from my iPad > > On Jun 13, 2016, at 8:33 AM, Xiaodi Wu via swift-evolution < > swift-evolution@swift.org> wrote: > > This is not a sound argument. If your filtering can be expressed as a > where clause, then you would only have to read one line into the loop to > see it in the form of a guard clause. > > Moreover, if what you're arguing is that you shouldn't ever have to *read* > inside the loop to know if a sequence is filtered, how do you propose that > we do that? Remove the continue keyword? > > On Mon, Jun 13, 2016 at 6:16 AM Jean-Daniel Dupas via swift-evolution < > swift-evolution@swift.org> wrote: > >> -1 for the removal. >> >> When I read code, I find it far more visible that a loop is over a filter >> list when the filter clause is on the same line, than when the filter >> clause is inside the loop. >> >> Having to read the full content of the loop to determine if the list is >> filtered or not is not an improvement IMHO. >> >> Moreover, I find it far cleaner to use the where clause that having to >> remember than I have to use the lazy accessor to avoid a performance hit. >> >> Le 13 juin 2016 à 06:39, Charlie Monroe via swift-evolution < >> swift-evolution@swift.org> a écrit : >> >> 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. >> >> -- E >> >> >> Not to undermine this fact, but I believe the fact that `where` can be >> used in a for loop is not widely known. I didn't know about it until about >> a month ago (haven't really read much docs, but most people don't either). >> >> But after I found out about it, I started using it and it IMHO improved >> readability of my code. Not by much, but it's the little things that make >> you smile, right? >> >> Many people here argument that `where` is a Swift speciality and needs to >> be learned by the developer - the alternative is to teach the person what's >> the proper alternative - that using .filter can have performance impact and >> that the *correct* way is to use guard within the for loop. And that's IMHO >> much worse than teaching a person about using `where` within a for loop. >> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org >> https://lists.swift.org/mailman/listinfo/swift-evolution >> >> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org >> https://lists.swift.org/mailman/listinfo/swift-evolution >> >> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org >> https://lists.swift.org/mailman/listinfo/swift-evolution >> > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution > >
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution