[swift-evolution] ed/ing, InPlace, Set/SetAlgebra naming resolution

Dave Abrahams dabrahams at apple.com
Tue Feb 16 13:28:36 CST 2016


on Tue Feb 16 2016, Craig Cruden <ccruden-AT-novafore.com> wrote:

> Richard’s suggestions is amount the better ones:
>
> Of the symdiff ones I think I would lean towards:
>
> let symmetricDifference = 	a.unionMinusIntersection(b)	// (a ∪ b) \ (a ∩ b) == a △ b

Yeah, you're right; those were great ideas.

> It is descriptive enough for those not familiar with the name “symmetricDifference”. 
>
> The fact that he keeps mutable names completely separate is a plus.
>
>> On 2016-02-17, at 2:16:24, Dave Abrahams via swift-evolution <swift-evolution at swift.org> wrote:
>> 
>> 
>> on Tue Feb 16 2016, Xiaodi Wu <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> 
>>> Not that I like it, but
>>> insertNonIntersectingRemoveIntersectingContentsOf(_:) would be the
>>> stylistically consistent way to convey the right sense.
>> 
>> Did you see Ricardo Parada's suggestions?  I thought some of those were
>> better.
>> 
>>> On Tue, Feb 16, 2016 at 10:22 AM Dave Abrahams via swift-evolution <
>>> swift-evolution at swift.org> wrote:
>>> 
>>>> 
>>>> on Mon Feb 15 2016, Brent Royal-Gordon <swift-evolution at swift.org> wrote:
>>>> 
>>>>> I think you've ended up with the right approach, and I understand the
>>>> need to move on, but...
>>>>> 
>>>>>>    /// Returns the set of elements contained in `self` or in `other`,
>>>> but not in both `self` and `other`.
>>>>>>    /// EXISTING: exclusiveOr
>>>>>>    @warn_unused_result
>>>>>>    func invertingIntersection(other: Self) -> Self
>>>>>> 
>>>>>>    /// Replaces `self` with a set containing all elements contained in
>>>> either `self` or `other`, but not both.
>>>>>>    /// EXISTING: exclusiveOrInPlace
>>>>>>    mutating func invertIntersection(other: Self)
>>>>> 
>>>>> I'm not quite happy with these. I don't like that the mutating form of
>>>>> `intersection` is `intersect`, but the mutating form of
>>>>> `invertingIntersection` is `invertIntersection`—it seems like both
>>>>> methods should change the "intersection" part.
>>>>> 
>>>>> Have you considered going the opposite direction and combining the verb
>>>> "intersect" with the adjective "inverse"?
>>>>> 
>>>>>    /// Returns the set of elements contained in `self` or in `other`,
>>>> but not in both `self` and `other`.
>>>>>    /// EXISTING: exclusiveOr
>>>>>    @warn_unused_result
>>>>>    func inverseIntersection(other: Self) -> Self
>>>>> 
>>>>>    /// Replaces `self` with a set containing all elements contained in
>>>> either `self` or `other`, but not both.
>>>>>    /// EXISTING: exclusiveOrInPlace
>>>>>    mutating func inverseIntersect(other: Self)
>>>>>    // or perhaps even `inverselyIntersect` so it's an adverb
>>>>> 
>>>>> I wouldn't be surprised if you did, because I could see you trying to
>>>>> dodge the adverb problem, but I thought it was worth asking.
>>>> 
>>>> These names all have the wrong sense, including the ones that were
>>>> decided upon.  “Inverting the intersection” doesn't imply that elements
>>>> not in the intersection will be merged, which is what happens in a
>>>> symmetric difference.
>>>> 
>>>> --
>>>> -Dave
>>>> 
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution at swift.org
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>> 
>> -- 
>> -Dave
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>

-- 
-Dave


More information about the swift-evolution mailing list