<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=""><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 28, 2016, at 6:19 PM, Dave via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><br class=""><blockquote type="cite" class="">On Mar 25, 2016, at 4:45 PM, Dave Abrahams <<a href="mailto:dabrahams@apple.com" class="">dabrahams@apple.com</a>> wrote:<br class=""><br class="">on Fri Mar 25 2016, <a href="http://davesweeris-at-mac.com" class="">davesweeris-AT-mac.com</a> wrote:<br class=""><br class=""><blockquote type="cite" class="">Can we rename `subtract` to `complement`, since that’s the correct<br class="">term? At least, I’m assuming that’s what `subtract` means… if not, I’m<br class="">confused.<br class=""><a href="https://en.wikipedia.org/wiki/Set_(mathematics)#Complements" class="">https://en.wikipedia.org/wiki/Set_(mathematics)#Complements</a><br class=""></blockquote><br class="">It's not just “complement,” because that means inverting set membership<br class="">of everything in a finite domain. It would have to be “relative<br class="">complement.” But “relative complement” lacks the directional<br class="">implication that plagues terms like “difference,” but not “subtracting.”<br class=""></blockquote><br class="">Fair points… I accidentally left off the argument label. May I amend my suggestion to "rename `subtract(:)` to `complement(relativeTo:)`”? It just seems to me that if we’re going to claim we’re implementing something, we should adopt as much of its “standard" syntax and terminology as possible. It makes Swift easier to use for those coming from other disciplines, IMHO.<br class=""></div></div></blockquote></div><br class=""><div class="">If you took 100 random developers off the street, and showed them code that said:</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">set1.formRelativeComplement(set2)</font></div><div class=""><br class=""></div><div class="">and</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">set1.subtracting(set2)</font></div><div class=""><br class=""></div><div class="">About 99.5% of them would understand the second better than the first on first read. </div><div class="">The other 0.5 of a developer would be living somewhere near Boulder and growing </div><div class="">his own hemi-pharmaceuticals.</div><div class=""><br class=""></div><div class="">The problem with subtraction is that there isn't really a good <font face="Menlo" class="">noun/formNoun</font> pair</div><div class="">for it. That means either breaking the pair into two words that aren't well matched</div><div class="">or using a noun that isn't that amazing, such as <font face="Menlo" class="">difference</font>.</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">set1.difference(set2)</font></div><div class=""><font face="Menlo" class="">set1.formDifference(set2)</font></div><div class=""><br class=""></div><div class="">In all my attempts at trying to brainstorm up a better word that would (1) retain</div><div class="">the characteristics of mutating/non-mutating pairing while (2) being easy to read</div><div class="">and understand, I could not come up with better than Dave A's <font face="Menlo" class="">subtract/subtracting</font>.</div><div class="">I may not like it aesthetically but when it comes to offering something better,</div><div class="">I've got nothing.</div><div class=""><br class=""></div><div class="">That said, I'd really like to see a Swift Doc markup that allows you to mark</div><div class="">pairs of mutating/nonmutating functions, not from a compiler point of</div><div class="">view but in doc markup.</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">/// - nonmutatingVersion: </font></div><div class=""><font face="Menlo" class="">/// - mutatingVersion:</font></div><div class=""><br class=""></div><div class="">What group handles expansion of the markup keywords and how can I file a</div><div class="">feature request asking for this to be added?</div><div class=""><br class=""></div><div class="">Thanks,</div><div class=""><br class=""></div><div class="">-- E</div><div class=""><br class=""></div><div class=""><br class=""></div></body></html>