And why couldn't we propose that it should?

Brandon 

> On May 31, 2016, at 4:14 PM, Xiaodi Wu <[email protected]> wrote:
> 
>> On Tue, May 31, 2016 at 3:08 PM, Brandon Knope <[email protected]> wrote:
>> What is wrong with:
>> 
>> if let y = y && x < z
>> 
>> They are, after all, independent from each other.
> 
> That won't compile.
>  
> 
>> Brandon 
>> 
>>> On May 31, 2016, at 3:59 PM, Xiaodi Wu via swift-evolution 
>>> <[email protected]> wrote:
>>> 
>>>> On Tue, May 31, 2016 at 2:51 PM, Christopher Kornher via swift-evolution 
>>>> <[email protected]> wrote:
>>> 
>>>> 
>>>>> On May 31, 2016, at 1:47 PM, Xiaodi Wu <[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
>>>>> ```
>>>> 
>>>> 
>>>> The definition is not a formal one, but that was the intent.
>>>> 
>>>> ```
>>>> let b = b where b > anyOtherVariable
>>>> ```
>>>> is legal as long as `anyOtherVariable` is not defined within the entire 
>>>> condition clause
>>> 
>>> 
>>> You can propose that rule, but it doesn't solve the issue. If, today, I've 
>>> got
>>> 
>>> ```
>>> let x = 1
>>> let y: Int? = 2
>>> let z = 3
>>> 
>>> if let y = y where x < z {
>>>   // do stuff
>>> }
>>> ```
>>> 
>>> your rule simply forces
>>> 
>>> ```
>>> if let y = y where y == y && x < z {
>>>   // do stuff
>>> }
>>> ```
>>> 
>>> The point is, the semantic relationship between what comes before and after 
>>> `where` exists in the mind of the human reader only.
>>> 
>>> _______________________________________________
>>> 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