I have concerns. Responses inline.
• What is your evaluation of the proposal?
-1. Neither semicolon-based nor newline-based conditionals strike me as
sufficiently better, and I do not feel it achieves its overall goal of
being easier to read.
The ";" did not pass my initial sniff test of readability. Though its
rationale is convincing, I found it difficult to parse a ";"-based
conditional as something being capable of short-circuiting and
binding. I personally would prefer resolving the ambiguities around
the ",", though I cannot speak to the feasibility of that relative to
The newline-based version gives me particular heartburn. I do not agree
with the notion that conditional lists and multi-line statements are
long-lost twins. The proposed syntax damages the context-awareness of
an element in a conditional list; conditionals must be read and
executed holistically, but, with the new syntax, an isolated line is
not clearly a part.
Consider, for example, a transposition of a few lines; regular
statements enjoy a low rate of accidental behavioral change without
comparable syntax change (because of optional bindings, guard, etc). My
current project team has a hard time resolving merge conflicts (ironic -
it causes a lot of them too). I don't have to work hard to imagine a
scenario like "goto fail;" with one of these newline-based conditionals,
which would be an unfortunate backslide for Swift.
• Is the problem being addressed significant enough to warrant a
change to Swift?
Yes. The current syntax(es) are often surprising as to what kinds of
checks, bindings, and pattern matches can be achieved in a single
conditional. If one member of a team is more fluent in the available
combinations of Swift conditionals than another, it's not uncommon
for the other member to review code and say, "Wow, are you sure you
can do that?"
• Does this proposal fit well with the feel and direction of Swift?
It is strongly in line with Swift's direction to combine many organically-
added syntax variations into a single overarching vision.
I have misgivings about a change like this coming to a head so close to
Swift 3's coming-out party.
• If you have used other languages or libraries with a similar
feature, how do you feel that this proposal compares to those?
I haven't seen the semicolon syntax before (except maybe in C-
style for loops), making it a fairly novel and surprising addition
to the language.
Both forms of the new syntax give me concerns, but the Pythonic quality
of the newline-based version does in particular.
• How much effort did you put into your review? A glance, a quick
reading, or an in-depth study?
I read through the revised proposal in detail.
On Fri, May 27, 2016, at 12:11 PM, Joe Groff via swift-evolution wrote:
swift-evolution mailing list