What is wrong with:

if let x = x where x > 10, y != 5, let z = z where z != x

Just as a contrived example?

Brandon 

> On May 31, 2016, at 4:03 PM, Xiaodi Wu <[email protected]> wrote:
> 
>> On Tue, May 31, 2016 at 2:59 PM, Brandon Knope <[email protected]> wrote:
>> Except "b" is the main focus of the where clause and b was just in the 
>> preceding if condition. 
>> 
>> I feel like we are trying to find ways to break the current where clause 
>> even though we've enjoyed it for almost a year now. I had no idea it was 
>> problematic and restrictive. I thought it made its intent very 
>> clear...leading to very readable code. 
>> 
>> Pretty soon almost every construct but conditionals will be allowed to have 
>> where clauses, and THAT seems inconsistent to me. 
>> 
>> ...what exactly is the current problem? Can someone show me a real world 
>> example?? I've already forgotten it in all of this discussion -_-
> 
> The origin of the problem is a simple question: how does one test for 
> something unrelated to the variable that's bound in an `if let` statement? 
> The answer is: in today's Swift, any such test after the first `let` must 
> come after `where`. This is problematic and restrictive because one is forced 
> to imply a semantic relationship that doesn't exist.
>  
>> Brandon 
>> 
>>> On May 31, 2016, at 3:47 PM, Xiaodi Wu via swift-evolution 
>>> <[email protected]> wrote:
>>> 
>>> 
>>> 
>>> On Tue, May 31, 2016 at 2:45 PM, Christopher Kornher via swift-evolution 
>>> <[email protected]> wrote:
>>>>>> 
>>>>>> Not allowed:
>>>>>> …
>>>>>> let a = a
>>>>>> let b = b where b > 10 && a > 5
>>>>> 
>>>>> Why would this not be allowed by your rule? You're making use of `b` in 
>>>>> your where clause. As I demonstrated above, essentially any assertion can 
>>>>> be rewritten to work around your rule. In general:
>>>> 
>>>> It is not allowed because  ‘a’ is defined in the line above. It must be 
>>>> defined in the ‘if let’ associated with the where in which it is mentioned.
>>> 
>>> That's a much more restrictive where clause than you proposed earlier. 
>>> You'd not be able to write:
>>> 
>>> ```
>>> let b = b where b > anyOtherVariable
>>> ``` 
>>> 
>>> _______________________________________________
>>> 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