> Am 01.06.2016 um 03:47 schrieb Xiaodi Wu via swift-evolution 
> <[email protected]>:
> 
> Revisiting this conversation, it seems that most of the design space has been 
> thoroughly explored. I think all suggestions presented so far boil down to 
> these:
> 
> Q: How is an arbitrary boolean assertion introduced after `if let`?
> 
> Option 1 (present scenario)--using `where`
> Advantages: expressive when it means exactly the right thing
> Drawbacks: makes obligatory the suggestion of a semantic relationship between 
> what comes before and after even when there is no such relationship

Haravikk already demonstrated that a semantic relationship always exists in the 
sense of "bind this variable for all caes where the following condition holds".

So, the perceived problem with the `where` clause does not exist.

-Thorsten 


> 
> Option 2--using a symbol sometimes encountered in conditional statements 
> (e.g. `&&` or comma)
> Advantages: doesn't look out of place
> Drawbacks: needs to be disambiguated from existing uses, necessitating other 
> changes in syntax
> 
> Option 3--using a symbol never encountered in conditional statements (e.g. 
> semicolon)
> Advantages: doesn't need to be disambiguated from any existing uses
> Drawbacks: looks out of place
> 
> For me, options 1 and 2 have permanent and objective drawbacks. By contrast, 
> familiarity increases with time, and beauty is in the eye of the beholder.
> 
> * * *
> 
> It does occur to me that there is one more option. I don't know that I like 
> it, but it's an option no one has put forward before: recite the opening 
> keyword when beginning a new boolean expression:
> 
> `if let x = x where x < 3 { ... }` becomes
> `if let x = x if x < 3 { ... }`
> 
> `while let item = sequence.next() where item > 0 { ... }` becomes
> `while let item = sequence.next() while item > 0 { ... }`
> 
> etc.
> 
> 
> On Tue, May 31, 2016 at 2:00 PM, Erica Sadun <[email protected]> wrote:
>> 
>> > On May 31, 2016, at 12:52 PM, Xiaodi Wu <[email protected]> wrote:
>> > These lines of reasoning are what have compelled me to conclude that 
>> > `where` might not be salvageable.
>> 
>> To which, I'd add: `where` suggests there's a subordinate and semantic 
>> relationship between the primary condition and the clause. There's no way as 
>> far as I know this to enforce it in the grammar and the proposal allows both 
>> clauses to be stated even without the connecting word. You could make a 
>> vague argument, I suppose, for renaming `where` to `when` but all in all, 
>> even killing `where` we benefit with better expressive capabilities and a 
>> simpler grammar.
>> 
>> -- E
> 
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to