<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">My understanding is that while we’re not specifically avoiding “similarity with C”, it’s not one of Swift’s design goals, either. That it’s happened in some areas is really just a side-effect of, a) Swift has to be able to interoperate with C (and Obj-C) code, and b) sometimes there’s nothing wrong with C’s syntax.<div class=""><br class=""></div><div class="">I’m “+0.25” towards removing ++ / —. I liked some of the clever code they enabled, but I understand (and agree with) the reasons for their removal. If you want to keep using them, though, they’re trivially easy to put back in:</div><div class=""><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(211, 54, 130);" class="">prefix<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> </span>operator<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> ++ {}</span></div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(211, 54, 130);" class="">postfix<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> </span>operator<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> ++ {}</span></div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(39, 139, 210);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">prefix</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> </span><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">func</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> ++ &lt;T: </span><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">protocol</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">&lt;</span>IntegerArithmeticType<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">, </span>IntegerLiteralConvertible<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">&gt;&gt; (</span><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">inout</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> x: </span>T<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">) -&gt; </span>T<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> {</span></div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(147, 161, 161);" class="">&nbsp; &nbsp; x += <span style="font-variant-ligatures: no-common-ligatures; color: #6c71c4" class="">1</span></div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(147, 161, 161);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">return</span> x</div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(147, 161, 161);" class="">}</div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(39, 139, 210);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">postfix</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> </span><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">func</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> ++ &lt;T: </span><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">protocol</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">&lt;</span>IntegerArithmeticType<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">, </span>IntegerLiteralConvertible<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">&gt;&gt; (</span><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">inout</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> x: </span>T<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">) -&gt; </span>T<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> {</span></div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(147, 161, 161);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">defer</span> { x += <span style="font-variant-ligatures: no-common-ligatures; color: #6c71c4" class="">1</span> }</div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(147, 161, 161);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">return</span> x</div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(147, 161, 161);" class="">}</div></div><div class=""><br class=""></div><div class=""><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(147, 161, 161);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">var</span> i = <span style="font-variant-ligatures: no-common-ligatures; color: #6c71c4" class="">0</span></div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(39, 139, 210);" class="">print<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">(</span><span style="font-variant-ligatures: no-common-ligatures; color: #29a198" class="">i++</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">)&nbsp;</span><span style="color: rgb(203, 75, 22);" class="">//</span><span style="color: rgb(203, 75, 22);" class="">&nbsp;0</span></div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono';" class=""><font color="#278bd2" class="">print</font><span style="color: rgb(147, 161, 161);" class="">(</span><span style="color: rgb(41, 161, 152);" class="">i</span><font color="#93a1a1" class="">) &nbsp; </font><span style="color: rgb(203, 75, 22);" class="">//</span><span style="color: rgb(203, 75, 22);" class="">&nbsp;1</span></div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(39, 139, 210);" class="">print<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">(</span><span style="font-variant-ligatures: no-common-ligatures; color: #29a198" class="">++i</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">)&nbsp;</span><span style="color: rgb(203, 75, 22);" class="">//</span><span style="color: rgb(203, 75, 22);" class="">&nbsp;2</span></div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(39, 139, 210);" class="">print<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">(</span><span style="font-variant-ligatures: no-common-ligatures; color: #29a198" class="">i</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">)</span><font color="#93a1a1" class="">&nbsp;&nbsp; </font><span style="color: rgb(203, 75, 22);" class="">//</span><span style="color: rgb(203, 75, 22);" class="">&nbsp;2</span></div></div><div class=""><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""><br class=""></span></div><div class="">And if you really prefer C’s behavior, you could even make them silently overflow instead of crashing (just beware the infinite loops…):</div><div class=""><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(39, 139, 210);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">prefix</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> </span><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">func</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> ++ &lt;T: </span><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">protocol</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">&lt;</span>IntegerArithmeticType<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">, </span>IntegerLiteralConvertible<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">&gt;&gt; (</span><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">inout</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> x: </span>T<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">) -&gt; </span>T<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> {</span></div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(147, 161, 161);" class="">&nbsp; &nbsp; x = x &amp;+ <span style="font-variant-ligatures: no-common-ligatures; color: #6c71c4" class="">1</span></div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(147, 161, 161);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">return</span> x</div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(147, 161, 161);" class="">}</div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(39, 139, 210);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">postfix</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> </span><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">func</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">&nbsp;++ &lt;T: </span><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">protocol</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">&lt;</span>IntegerArithmeticType<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">, </span>IntegerLiteralConvertible<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">&gt;&gt; (</span><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">inout</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> x: </span>T<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">) -&gt; </span>T<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class=""> {</span></div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(147, 161, 161);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">defer</span> { x = x &amp;+ <span style="font-variant-ligatures: no-common-ligatures; color: #6c71c4" class="">1</span> }</div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(147, 161, 161);" class="">&nbsp; &nbsp; <span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">return</span> x</div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(147, 161, 161);" class="">}</div></div><div class=""><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(147, 161, 161);" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #d33682" class="">var</span> i:<span style="font-variant-ligatures: no-common-ligatures; color: #278bd2" class="">UInt8</span> = <span style="font-variant-ligatures: no-common-ligatures; color: #6c71c4" class="">255</span></div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(39, 139, 210);" class="">print<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">(</span><span style="font-variant-ligatures: no-common-ligatures; color: #29a198" class="">i++</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">)&nbsp;</span><span style="color: rgb(203, 75, 22);" class="">//</span><span style="color: rgb(203, 75, 22);" class="">&nbsp;255</span></div><div style="margin: 0px; line-height: normal; font-family: 'Fira Mono'; color: rgb(39, 139, 210);" class="">print<span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">(</span><span style="font-variant-ligatures: no-common-ligatures; color: #29a198" class="">i</span><span style="font-variant-ligatures: no-common-ligatures; color: #93a1a1" class="">) &nbsp; </span><span style="color: rgb(203, 75, 22);" class="">//</span><span style="color: rgb(203, 75, 22);" class="">&nbsp;0</span></div></div><div class=""><br class=""><div class="">
- Dave Sweeris (The Other Dave)
</div>
<br class=""><div><blockquote type="cite" class=""><div class="">On Jan 30, 2016, at 10:12, Vanderlei Martinelli via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Helvetica;" class="">Hello everybody.</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Helvetica;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Helvetica;" class="">I see Swift as a member of “C family" (a granddaughter/grandson of C, a daughter/son of Objective-C). OK, she/he is different and has her/his own personality like a daughter/son should be and have, but I still like to see Swift and recognize some traces that I know are things that became from C.</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Helvetica;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Helvetica;" class="">This said, I would like to say that after the removal of `++` and `--` my code becomes less readable and more prone to errors. There were two characters to differentiate an addition from a subtraction, now there is only one (`+= 1`, `-= 1`). Also the character keys are very close in the US keyboard so it is easier to make a mistake and is not as simple as the previous solution when I typed two times the same key. Using Erica's way of saying certain things: I do not love the removal of `++` and `--`.</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Helvetica;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Helvetica;" class="">I do not know how far the Swift is to the adolescence, but it is certain that teenagers are rebels. There's something very good at it. In most cases they are to be certain. But in some things they regret later. Now I see that many of us want to replace the `??` operator to something else. I'm wondering the next steps...&nbsp; To replace the `&amp;&amp;`, `||` and `!` operator with `and`, `or`, `not`? I’m not "loving" this as well.</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Helvetica;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Helvetica;" class="">Are these changes really necessary for the Swift evolution? Is it the better path to deny its origin and to try to fix what is not broken? I would like you to think about it.</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Helvetica;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Helvetica;" class="">There are many other things that really need to be improved and repaired and other things needed to are created. Those mentioned here in this message does not seem to fit it.</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Helvetica;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Helvetica;" class="">Regards,</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Helvetica;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: Helvetica;" class="">-Van</div></div>
_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></blockquote></div><br class=""></div></body></html>