<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=""><div class="">There's always ≠ but then it's just a hop, skip, and a jump to APL.&nbsp;</div><div class=""><a href="https://en.wikipedia.org/wiki/Relational_operator#Standard_relational_operators" class="">https://en.wikipedia.org/wiki/Relational_operator#Standard_relational_operators</a></div><div class=""><br class=""></div><div class="">-- E</div><div class="">p.s. I like != for inequality and ! for Boolean negation</div><div class=""><br class=""></div><div class=""><br class=""></div><div><blockquote type="cite" class=""><div class="">On Dec 15, 2015, at 9:11 AM, Marc Knaup 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" style="font-family: Palatino-Roman; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">What would be the replacement for "not identical" then?<div class="">&lt;=&gt; ?</div><div class=""><br class=""></div><div class="">&lt;&gt; is a bit weird and could potentially conflict/be confused with generics.</div></div><div class="gmail_extra" style="font-family: Palatino-Roman; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br class=""><div class="gmail_quote">On Tue, Dec 15, 2015 at 5:09 PM, Bee<span class="Apple-converted-space">&nbsp;</span><span dir="ltr" class="">&lt;<a href="mailto:bee.ography@gmail.com" target="_blank" class="">bee.ography@gmail.com</a>&gt;</span><span class="Apple-converted-space">&nbsp;</span>wrote:<br 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;"><div dir="ltr" class="">I'm a fan of wordy over cryptic operators. It's easier to the eyes. However, the design of Swift seems to be unable to accept word as operator. So, we have to accept cryptic operators.<div class=""><br class=""></div><div class="">I'm agree that as ! is used in optionals, it wouldn't fit to be used as "not" anymore.</div><div class=""><br class=""></div><div class="">So, I vote for &lt;&gt; for "not equal". :)<br class=""><div class=""><br class=""></div><div class="">Regards,</div><div class=""><br class=""></div><div class="">-Bee</div><div class=""><div class="h5"><div class=""><br class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On Tue, Dec 15, 2015 at 10:57 PM, Marc Knaup via swift-evolution<span class="Apple-converted-space">&nbsp;</span><span dir="ltr" class="">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt;</span><span class="Apple-converted-space">&nbsp;</span>wrote:<br 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;"><div dir="ltr" class="">Good point!<div class="">The negating equality and identity operators != and !== both wouldn't fit anymore.&nbsp;</div></div><div class=""><div class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On Tue, Dec 15, 2015 at 4:19 PM, Andrew Brown<span class="Apple-converted-space">&nbsp;</span><span dir="ltr" class="">&lt;<a href="mailto:a.br@me.com" target="_blank" class="">a.br@me.com</a>&gt;</span><span class="Apple-converted-space">&nbsp;</span>wrote:<br 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;"><div dir="auto" class=""><div class="">I'm interested to hear what the opinions are for this.</div><div class="">When I first read the idea I was a definite NO! (See what I did there :) )</div><div class="">But after thinking about it I'm interested to hear how people feel about this.</div><div class="">The obvious issue is what do we do with '!=' ?</div><div class="">Most languages which do not use ! for negation use '&lt;&gt;' for '!=' and I'm no sure how popular that would be.</div><div class=""><br class=""></div><div class="">ABR.</div><div class=""><div class=""><div class=""><br class="">On 15 Dec 2015, at 15:01, Marc Knaup via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt; wrote:<br class=""><br class=""></div><blockquote type="cite" class=""><div class=""><div dir="ltr" class="">I'm uncertain but it's definitely worth considering.<div class=""><br class=""><div class="">I also think that it's weird at the moment since in most cases the exclamation mark is now something dangerous.</div></div><div class="">I also had a couple of bugs in my code because the operator is too easy to miss and the negation was not or no longer intended.</div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Tue, Dec 15, 2015 at 3:11 PM, Bruno Berisso via swift-evolution<span class="Apple-converted-space">&nbsp;</span><span dir="ltr" class="">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt;</span><span class="Apple-converted-space">&nbsp;</span>wrote:<br 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;"><div dir="ltr" class="">Hello,<div class=""><br class=""></div><div class="">I'm really used to negate logical expressions with this operator but it never feels confortable to me. If I need to negate some complex expression sometimes I prefer to write a temporal variable and then negate that with<span class="Apple-converted-space">&nbsp;</span><b class="">!</b>&nbsp;because I fear than others, or myself, could overlook it and cause confusion.</div><div class=""><br class=""></div><div class="">Now that Swift use the same operator to force the unwrap of optional values it becomes even worse.</div><div class=""><br class=""></div><div class="">Consider this examples:</div><div class=""><br class=""></div><div class="">if someOptionalValue != nil {</div><div class="">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>...</div><div class="">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>if !(otherBoolValue &amp;&amp; someOptionalValue! &gt; 0) {</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>...</div><div class="">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>}</div><div class="">}</div><div class=""><br class=""></div><div class="">Or even worse, what happen when negating Optional&lt;Bool&gt; values?</div><div class=""><br class=""></div><div class="">//Best case</div><div class="">if let value = optionalBool where !value {</div><div class="">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>...</div><div class="">}</div><div class=""><br class=""></div><div class="">//Worse case</div><div class="">if !optionalBool! {</div><div class="">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>...</div><div class="">}</div><div class=""><br class=""></div><div class="">Now what happen with this examples if we instead use a&nbsp;<b class="">not</b>&nbsp;operator:</div><div class=""><br class=""></div><div class=""><div class="">if someOptionalValue != nil {</div><div class="">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>...</div><div class="">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>if not (otherBoolValue &amp;&amp; someOptionalValue! &gt; 0) {</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>...</div><div class="">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>}</div><div class="">}</div><div class=""><br class=""></div><div class="">if let value = optionalBool where not value {</div><div class="">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>...</div><div class="">}</div><div class=""><br class=""></div><div class="">if not optionalBool! {</div><div class="">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span>...</div><div class="">}</div></div><div class=""><br class=""></div><div class="">I'm not sure if<span class="Apple-converted-space">&nbsp;</span><b class="">not</b>&nbsp;is the right path here but I really want to improve the<span class="Apple-converted-space">&nbsp;</span><b class="">!</b>&nbsp;to something more clear at a glance and that doesn't have different behaviour depending where it appears in an expression.</div><div class=""><br class=""></div><div class="">Thanks,</div></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=6ZGE61OxINd5lLe2xYh9Ku-2BXbixWNr2nvfzp2IB1sZiUK6bWllvEAW1nr0HIeUahbgxRTKL9Y15l4Vtk8B72J-2BZQXJRCmf-2B4azoEnD6bnKV5S7-2Bku6A5xCXRoBAJeopBSkIQTbcN8g2-2BePsmHiVp3qgaUWk2nUP-2Fwoi93r6jvWfWg3Kj7XQklxjLvSGlfXuW96qy459-2BFNfdsiHQ4a0wF02qeVSIfpWOCKLxzuwTvTk-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;" class=""><span class="Apple-converted-space">&nbsp;</span><br class="">_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class=""><br class=""></blockquote></div><br class=""></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=XyCJWhfMItFjSNmahITOcyxV9JT9ZIrLvQ-2Bkm7FUBXvFmBnTyNwTNN2BKFpIKpSFWQ0koKWoAkPs-2BPWp2sYrmA5wrgXZl8xrd9Jj5MH9r2Mjksd0g3abkno3MURRDBfdiYn9zoepXBNxB41kV-2FZ89-2B-2Fnyd97V56d9g1L0Pyts3XDSzYAOOgXuxwUpnvEhebvleLc6c-2ByP6rEf1Eg5QRY6A-3D-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;" class=""></div></blockquote><blockquote type="cite" class=""><div class=""><span class="">_______________________________________________</span><br class=""><span class="">swift-evolution mailing list</span><br class=""><span class=""><a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a></span><br class=""><span class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br class=""></div></blockquote></div></div></div></blockquote></div><br class=""></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=kPpE8prjils5Te4T0SIbdBbrHkMvwDTrNPlEKlqAfI7tnmP2u-2BDlLCwqZFEC5lC4Teib-2FYgyvxN3KkKkq-2F3bnePbuV8jXMYCQHmIyBolZiz-2BFquYuRs6V3QzS615gQFE7LJiKESxEMAfd3aHH2PiXdDPF6-2BcgnYG8LuT0Tnz-2BWn1Z394Np2gWxeffITWWEGlt-2B02GKit8usWfFtTFyAtUx6UvI1P-2FgtFn-2BSON4SGLpA-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;" class=""></div></div><br class="">_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class=""><br class=""></blockquote></div><div class=""><div dir="ltr" class=""><div class=""><br class=""></div></div></div></div></div></div></div></div></div></blockquote></div><br class=""></div><img src="https://u2002410.ct.sendgrid.net/wf/open?upn=r5jpKsi6nat7oa43lpCLi5GRGm2utDkbDscuFklXZ2f9INSbrjfE7I-2B-2B5MUCmiPVQKbre8SxDAAHW2WtExE0Io7XTsADAaM-2BVM7TsK1frxL73gRoh98tSZ-2BnChbE4-2FvwKTkKfgFS5cgvhAPlmOgiJ5OF3z1DawsAtQsBxZ7Z0TQm413LCiT7G7M2jpvxuiHow8WmR3cmP1WLL-2FvxpD-2BvKqrDR-2BmWYvlnCBqxAZGoGDo-3D" alt="" width="1" height="1" border="0" style="font-family: Palatino-Roman; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; height: 1px !important; width: 1px !important; border-width: 0px !important; margin: 0px !important; padding: 0px !important;" class=""><span style="font-family: Palatino-Roman; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class=""><span class="Apple-converted-space">&nbsp;</span>_______________________________________________</span><br style="font-family: Palatino-Roman; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Palatino-Roman; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">swift-evolution mailing list</span><br style="font-family: Palatino-Roman; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="mailto:swift-evolution@swift.org" style="font-family: Palatino-Roman; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">swift-evolution@swift.org</a><br style="font-family: Palatino-Roman; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" style="font-family: Palatino-Roman; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></div></blockquote></div><br class=""></body></html>