[swift-evolution] [swift-evolution-announce] [Review] SE-0099: Restructuring Condition Clauses
Christopher Kornher
ckornher at mac.com
Tue May 31 14:32:14 CDT 2016
> On May 31, 2016, at 1:00 PM, Erica Sadun via swift-evolution <swift-evolution at swift.org> wrote:
>
>
>> On May 31, 2016, at 12:52 PM, Xiaodi Wu <xiaodi.wu at gmail.com> 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.
OK. I am naive enough to try to informally define a rule that would make “where” required and cover all (?) cases in the proposal:
‘where’ is required after an if-let for any clause involving a variable or constant defined in that 'if let. All boolean expressions after the ‘where’ must reference at least one of constants defined by the ‘if let'
Allowed:
let a = a, b=b where b > 10 && a > 5 && b> a
Not allowed:
…
let a = a
let b = b where b > 10 && a > 5
b > a
...
…
let a = a
let b = b where b > 10
a > 5
b > a
…
This requires the use of commas because all inter-related ‘if let’ constants must be associated with a single ‘where'
This makes the use of ‘&&’ more natural, since everything to the right of “where” is a boolean expression
The formal grammar is left as an exercise :)
The downside:
I would not have to answer all the ‘Why won’t this compile?’ questions on stack overflow. Of course, I would not want to do that for the current syntax, either.
> 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
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
More information about the swift-evolution
mailing list