<div dir="ltr"><div>I am strongly against this proposal.</div><div><br></div><div>In terms of clarity: Paul Cantrill made the very good point in a different thread that &quot;beginner-friendly&quot; syntax may not be the same as syntax optimized for the productivity of developers working on serious projects. I think this is a great example of that principle in action. Sigils stand out to the eye when scanning code in a way that keywords don&#39;t, even in an IDE with syntax highlighting (and the perils of relying upon relying upon color have been discussed pretty thoroughly in the mandatory &#39;self&#39; thread). Replacing them with keywords makes it harder to delineate the arguments.<br></div><div><br></div><div>In terms of semantics: The argument was made earlier that &quot;?&quot; is associated closely with optionals and not suitable for this purpose; I disagree: &quot;?&quot;&#39;s overarching meaning is that of uncertainty or querying, which makes sense both in terms of control flow (predicate determines which way to go), as well as optionals (whose &#39;empty or not&#39; status is unknown until explicitly checked for, e.g. via if-let).</div><div><br></div><div>In terms of beginner-friendliness: I don&#39;t think the ternary symbols are particularly difficult to learn. The operators show up in other languages as well and the actual usage rules are very simple. On the other hand, I don&#39;t think having two related-but-distinct forms of if-else, or mangling multi-line if-else into a form quite dissimilar to those of other languages (or of the other control flow constructs in Swift) is helpful to people learning the language.</div><div><br></div><div>My personal preference is to hold a separate discussion as to whether or not we should have expression variants of the if, switch, and other control flow statements, but even so I don&#39;t see them as a replacement for single-line expressions using the ternary operator being discussed.</div><div><br></div><div>Best,</div><div>Austin</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Dec 14, 2015 at 4:50 PM, Nick Shelley via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span style="font-size:12.8px">I however frequently hear people saying ternary should be avoided because they are hard to read or they hate them.</span></blockquote><div><br></div></span><div>FWIW, I used to be one of those people, but then started working on a team where one member liked them. He didn&#39;t force them on us, but after enough code reviews where he showed us how to turn 5-line if/else statements into simple one-line ternary expressions, I got used to reading them and now love them and use them often.</div><div><br></div><div>People also hate map, flatMap, reduce, etc., for the same reasons (it&#39;s hard for them to read because it&#39;s not the for loop they&#39;re used to). I think it&#39;s a simple matter of getting used to it.</div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Mon, Dec 14, 2015 at 11:57 AM, Chris Lattner via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div class="h5"><div style="word-wrap:break-word"><span><br><div><blockquote type="cite"><div>On Dec 14, 2015, at 12:19 AM, Paul Ossenbruggen via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</div><br><div><div style="word-wrap:break-word">Once again, thank you for all the feedback, if I sound in anyway grumpy in responding to any email, it has a bit more to do with my cold than the suggestions.<div><br></div><div>I have split the original proposal into two proposals and incorporated a bunch of feedback. Splitting it up has been extremely good, not only does it improve readability, I am actually finding I could take or leave the ternary replacement idea. But the proposal will be there if enough everyone thinks it is a good idea. We could put it to a vote to see if there is enough interest and I would be happy to take it further if there is. I suspect this thread would not exist at all if there was no interest in it. However, I am finding I am far more interested in getting switch expressions. <div><div><br></div><div>Ternary Replacement</div><div><a href="https://github.com/possen/swift-evolution/blob/master/0021.md" target="_blank">https://github.com/possen/swift-evolution/blob/master/0021.md</a></div></div></div></div></div></blockquote><br></div></span><div>Quick comment.  The proposal states:</div><div><br></div><div><br></div><div>Is it really better? Why not just keep ternary expressions?<br>This is a valid question, there is an advantage in compactness to ternary expressions. I however frequently hear people saying ternary should be avoided because they are hard to read or they hate them. There seems to many who either stronly dislike it or don&#39;t care.</div><div><br></div><div><br></div><div>However, it doesn’t actually show that it is solving the objections people have to the ternary operator.  It is true that some people find the ?: syntax weird, but an equal number of people say that the problem is that you’re putting complex conditional logic inline into the middle of an expression - this proposal actually makes that objection worse.  There are also other objections to ?:, and until you enumerate them, it is hard to see whether this proposal is making things better or worse.</div><div><br></div><div>-Chris</div>
<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=Kyo40-2Fb6mK7qqe0u18o4nlmNW45gwtJGUNOsveb6UxMCKU0IxM3AL-2BXB69-2BTeBzqeiHEjxCbGiiTkOy7TeYvpqYPlzaY54wmpuRZO1P8gRoZmxxWLqoqzHkADbbxA8c5rtsQQk4-2Fu7fXEu4WagpNp-2BomNvCIawTMV5yfsYmUNV-2FP44VHctms-2FBjaa-2FVsTHCWfhMLUdui5GKu7Q7-2BIYa8rNI2wUC9BB77lcZvEScfTLI-3D" alt="" width="1" height="1" border="0" style="min-height: 1px !important; width: 1px !important; border-width: 0px !important; margin: 0px !important; padding: 0px !important; display: none !important;">
</div>
<br></div></div><span class="">_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br></span></blockquote></div><br></div>
<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=7XtDdMHRjqIUi4tzSjSp2pWQIyxYdP6woIWn4vwV5gef1zWzX4rhQXqw-2Bv09R1igYA9AKcy8eIX5uXkUZqaKgAL5zqJ-2FQJX4D0OhODiJ5NQQBkXtLjnX0Q5uFl2BIKhoDhursDmuoT17lBl4FHx4xRyqLKDtSyBIgTHzew-2FroX9rpZ-2F908DhkVkz4ai2XcNhO7cSRpFamG3g6Y1yM3KyK2109MmZXe0T7D5-2Fdcwq2jE-3D" alt="" width="1" height="1" border="0" style="min-height: 1px !important; width: 1px !important; border-width: 0px !important; margin: 0px !important; padding: 0px !important; display: none !important;">
<br>_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br></blockquote></div><br></div></div>