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
