[swift-evolution] Location of ! in Boolean negation expressions

James Andrews james at enigmanorth.com
Mon Aug 8 10:56:25 CDT 2016


The .! syntax is a bit gross I think.  The problem is that programmers
are very familiar with the NOT <something> 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!

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.


On Sat, Aug 6, 2016, at 07:32 PM, Anton Zhilin via swift-evolution wrote:
> 2016-08-06 10:37 GMT+03:00 Darren Mo via swift-evolution <swift-
> evolution at swift.org>:
>> Consider code like
>>  guard !parameters.contains(where: { !validValueRange.contains($0) })
>>  else …
>>  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
>>  “Make sure parameters does not contain an element such that
>>  validValueRange does not contain this element.”
>>  But the programming-language-imposed ordering is
>>  “Make sure NOT parameters contains an element such that NOT
>>  validValueRange contains this element.”
> 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:)'.
> Plus, we could add 'unless' alongside 'guard'. But these features were
> postponed to Stage 2.
> _________________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160808/6ecef757/attachment.html>

More information about the swift-evolution mailing list