[swift-evolution] SetAlgebra naming update

Erica Sadun erica at ericasadun.com
Mon Mar 28 19:34:54 CDT 2016


> On Mar 28, 2016, at 6:19 PM, Dave via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
>> On Mar 25, 2016, at 4:45 PM, Dave Abrahams <dabrahams at apple.com> wrote:
>> 
>> on Fri Mar 25 2016, davesweeris-AT-mac.com wrote:
>> 
>>> Can we rename `subtract` to `complement`, since that’s the correct
>>> term? At least, I’m assuming that’s what `subtract` means… if not, I’m
>>> confused.
>>> https://en.wikipedia.org/wiki/Set_(mathematics)#Complements
>> 
>> It's not just “complement,” because that means inverting set membership
>> of everything in a finite domain.  It would have to be “relative
>> complement.”  But “relative complement” lacks the directional
>> implication that plagues terms like “difference,” but not “subtracting.”
> 
> 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.

If you took 100 random developers off the street, and showed them code that said:

set1.formRelativeComplement(set2)

and

set1.subtracting(set2)

About 99.5% of them would understand the second better than the first on first read. 
The other 0.5 of a developer would be living somewhere near Boulder and growing 
his own hemi-pharmaceuticals.

The problem with subtraction is that there isn't really a good noun/formNoun pair
for it. That means either breaking the pair into two words that aren't well matched
or using a noun that isn't that amazing, such as difference.

set1.difference(set2)
set1.formDifference(set2)

In all my attempts at trying to brainstorm up a better word that would (1) retain
the characteristics of mutating/non-mutating pairing while (2) being easy to read
and understand, I could not come up with better than Dave A's subtract/subtracting.
I may not like it aesthetically but when it comes to offering something better,
I've got nothing.

That said, I'd really like to see a Swift Doc markup that allows you to mark
pairs of mutating/nonmutating functions, not from a compiler point of
view but in doc markup.

/// - nonmutatingVersion: 
/// - mutatingVersion:

What group handles expansion of the markup keywords and how can I file a
feature request asking for this to be added?

Thanks,

-- E


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160328/56e140fa/attachment.html>


More information about the swift-evolution mailing list