<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div>Hi,<br></div>
<div><br></div>
<div>The .! syntax is a bit gross I think. &nbsp;The problem is that programmers are very familiar with the NOT &lt;something&gt; semantics. So while changing it might be pleasing from a natural language perspective, it will seem strange from the programmer perspective. I guess you cant win!</div>
<div><br></div>
<div>I like the suggestion of adding a negative form of the method. However syntax changes are not going to happen for a while now I believe.&nbsp;<br></div>
<div><br></div>
<div id="sig48843321"><div class="signature">Thanks,<br></div>
<div class="signature">James</div>
</div>
<div><br></div>
<div><br></div>
<div>On Sat, Aug 6, 2016, at 07:32 PM, Anton Zhilin via swift-evolution wrote:<br></div>
<blockquote type="cite"><div dir="ltr"><div><div defang_data-gmailquote="yes"><div>2016-08-06 10:37 GMT+03:00 Darren Mo via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt;</span>:<br></div>
<blockquote style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204, 204, 204);padding-left:1ex;" defang_data-gmailquote="yes"><div>Consider code like<br></div>
<div> <br></div>
<div> guard !parameters.contains(where: { !validValueRange.contains($0) }) else …<br></div>
<div> <br></div>
<div> Oftentimes I need to write negation expressions like this. The location of the exclamation marks really bugs me when writing and reading this code. The natural English ordering would be something like<br></div>
<div> <br></div>
<div> “Make sure parameters does not contain an element such that validValueRange does not contain this element.”<br></div>
<div> <br></div>
<div> But the programming-language-imposed ordering is<br></div>
<div> <br></div>
<div> “Make sure NOT parameters contains an element such that NOT validValueRange contains this element.”<br></div>
</blockquote><div><br></div>
<div>One solution to this problem would be to add negative method versions wherever possible. For example: 'all', 'any', 'some', 'none' methods instead of just 'contains(where:)'.<br></div>
<div>Plus, we could add 'unless' alongside 'guard'. But these features were postponed to Stage 2.<br></div>
</div>
</div>
</div>
<div><u>_______________________________________________</u><br></div>
<div>swift-evolution mailing list<br></div>
<div><a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br></div>
<div><a href="https://lists.swift.org/mailman/listinfo/swift-evolution">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br></div>
</blockquote><div><br></div>
</body>
</html>