> Am 10.06.2016 um 07:08 schrieb Xiaodi Wu via swift-evolution 
> <swift-evolution@swift.org>:
> 
>> On Thu, Jun 9, 2016 at 9:45 PM, Dany St-Amant <dsa....@icloud.com> wrote:
>> 
>>> Le 9 juin 2016 à 14:55, Xiaodi Wu via swift-evolution 
>>> <swift-evolution@swift.org> a écrit :
>>> 
>>> There have been, in previous threads, several examples given where users of 
>>> Swift have found the behavior of `where` to be misleading and confusing.
>> 
>> Sorry Xiaodi, but beside you (on multiple instances), and recently Erica, I 
>> have do not recall hearing that many voices saying that 'where' is confusing.
> 
> Shawn Erickson wrote this to the list just yesterday:
> 
> "I support your position on the use of where and while/when being confusing 
> in the loop statement. I (and I know others) have for example used where in a 
> loop statement mistakenly thinking it would terminate the loop early but of 
> course learned that it basically filters what causes the loop body to be 
> executed. After the fact that made sense to me but it didn't click at first."
>  
>> Yes, there's was maybe even less voices stating that it is not confusing, 
>> but which group is more vocal?
>> 
>> Maybe I have been recently corrupt by Solid SQL queries:
>> select * from PEOPLE_TABLE where AGE_FIELD = 100
>> 
>> Or by my (likely) broken English:
>> The places where I had the most fun
>> 
>> But, to me, where can only suggest some filtering (thus tag to a for ..  in 
>> .., continue if not matching). 
> 
> I'm glad that you find it very clear. I do as well. That does not mean it is 
> clear to everyone.

So all these people never had contact with SQL?

-Thorsten 


>  
>> I know there's a linguist on the list, maybe he could comment on whether or 
>> not using 'where' as a filter is proper or an abomination.
>> 
>> I do not think that because something is confusing to some, or at first, 
>> that it warrant removal from the language.
> 
> It is a very bad sign if something is confusing at first, especially to a 
> significant proportion of users. It's true by definition that once you have 
> mastered something you are no longer confused by it.
> 
> As has been stated on this list, education is a valid and important 
> consideration for Swift. If something is confusing rather than difficult (and 
> the *concept* of filtering a list is not at all a difficult concept), and if 
> the same underlying concept can already be invoked in alternative and 
> equivalent ways that are not confusing, then it's a no-brainer that the 
> confusing thing is harmful to the language and should be removed on that 
> basis alone.
> 
> By analogy, Chinese and Japanese share difficult writing systems. Yet many 
> people use those languages daily without difficulty. Does that mean there's 
> not a problem? Far from it: in fact, you'll find that many intelligent people 
> have devoted their life's work to mitigating the issue. Both Chinese and 
> Japanese underwent a round of simplification in the 20th century. Think about 
> it: real languages used for daily life by a significant fraction of the 
> world's population were revamped for the purpose of increasing accessibility 
> to new learners.
> 
>> The by-value/by-reference is well define, but can be confusing at first. 
>> Same goes for eager/lazy processing, or escaping vs non-escaping closure, or 
>> even the difference between closure and function. But no one suggest to 
>> remove them.
> 
> Value types vs. reference types is a concept (and a moderately advanced one), 
> eager vs. lazy processing is a concept (and a moderately advanced one), and 
> closures are a concept (and definitely an advanced one).
> 
> Filtering a collection is a concept as well, and no one is suggesting its 
> removal. We are proposing to simplify and rationalize the syntax by which 
> filtering is invoked. If there were a way to dramatically simplify the syntax 
> surrounding value types and reference types so as to diminish confusion, you 
> can absolutely guarantee that there would be proposals to change the syntax. 
> If I could think of one tomorrow, you'd see a thread tomorrow about it. I 
> don't think I'm that smart though.
> 
>> 
>> Dany
>> 
>>> In fact, the first of these proposals began with a question: how does one 
>>> write arbitrary Boolean assertions after a let binding? The answer (use 
>>> `where`) was found to be misleading and confusing.
>>> 
>>> I think you're being unfair to say that these proposals have no purpose 
>>> other than an academic consistency.
>>>> On Thu, Jun 9, 2016 at 13:29 Jon Shier via swift-evolution 
>>>> <swift-evolution@swift.org> wrote:
>>>>         As time goes on, I’m feeling more and more that these consistency 
>>>> proposals are sorely misguided. Frankly, unless the syntax is confusing or 
>>>> misleading, even once the developer has learned the guiding principles of 
>>>> Swift, consistency is not a good argument for change. This proposal is the 
>>>> perfect example of this. No one will find the use of “where” in loops 
>>>> confusing, aside from those who will wonder why it was removed from if 
>>>> statements. There is no misleading behavior or confusing syntax here. This 
>>>> is just consistency for consistency’s sake. Once this proposal is done, 
>>>> then another will be made to remove “where” from another place in the 
>>>> language. Then another and another until it’s gone completely and a very 
>>>> useful part of the language is removed in the name of consistency. Which 
>>>> really just comes down to “where” isn’t used here, so it can’t be used 
>>>> there anymore. It’s death by a thousand cuts.
>>>> 
>>>> 
>>>> 
>>>> Jon Shier
>>>> 
>>>> 
>>>> > On Jun 9, 2016, at 1:16 PM, Erica Sadun via swift-evolution 
>>>> > <swift-evolution@swift.org> wrote:
>>>> >
>>>> >
>>>> >> On Jun 9, 2016, at 11:11 AM, Charlie Monroe <char...@charliemonroe.net> 
>>>> >> wrote:
>>>> >> See my latest post - included results with -Ofast. But still, using 
>>>> >> filter and lazy.filter is 10+% slower, which were the suggested 
>>>> >> alternatives to `where`.
>>>> >>
>>>> >>
>>>> >
>>>> > I need to correct this misapprehension.
>>>> > My suggested alternative to where was and remains `guard`.
>>>> >
>>>> > -- E
>>>> >
>>>> > _______________________________________________
>>>> > 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

Reply via email to