> On May 27, 2016, at 6:26 PM, Brent Royal-Gordon <[email protected]> 
> wrote:
> 
>> guard
>> x == 0 && a == b && c == d &&
>> let y = optional, w = optional2, v = optional 3 &&
>>  z == 2
>> else { ... }
>> 
>> Figuring out where to break the first line into expression and into 
>> condition (after the `d`) could be very challenging to the compiler.
> 
> I'm not sure it is. `let` and `case` are not valid in an expression, so an 
> `&&` followed by `let` or `case` must be joining clauses. On the other side 
> of things, Swift's `&&` doesn't ever produce an optional, so if we're parsing 
> an expression at the top level of an if-let, an `&&` must indicate the end of 
> the clause. An if-case *could* theoretically include an `&&`, but pattern 
> matching against a boolean value seems like a fairly useless thing to do in a 
> context that's specifically intended to test booleans.

Let me answer in another way that speaks to my background which isn't in 
compiler theory: The use of && may produce cognitive overload between the use 
in Boolean assertions and the use in separating condition clauses.

-- E

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to