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

Dave Abrahams dabrahams at apple.com
Sat Feb 13 12:16:26 CST 2016


on Fri Feb 12 2016, Ricardo Parada <swift-evolution at swift.org> wrote:

> Hi all,
>
> I can’t make up my mind.  Let me propose two different alternatives
> that I’m not sure if they have been considered:
>
> ALTERNATIVE 1
>
> Non-mutable (noun-based)
>
> -  func union(other: Self) -> Self
> +  func union(other: Self) -> Self		Assumes union is a noun, i.e. not a verb
>
> -  func intersect(other: Self) -> Self
> +  func intersection(other: Self) -> Self
>
> -  func subtract(other: Self) -> Self
> +  func subtraction(other: Self) -> Self
>
> -  func exclusiveOr(other: Self) -> Self
> +  func symmetricSubtraction(other: Self) -> Self
>
> Mutable (verb-based)
>
> -  mutating func unionInPlace(other: Self)
> +  mutating func unite(other: Self)
>
> -  mutating func intersectInPlace(other: Self)
> +  mutating func intersect(other: Self)
>
> -  mutating func subtractInPlace(other: Self)
> +  mutating func subtract(other: Self)
>
> -  mutating func exclusiveOrInPlace(other: Self)
> +  mutating func symmetricSubtract(other: Self)
>
> Comments: 
>
> With this alternative we keep the union name which I assume is
> popular.  However, one has to accept unite as a verb (for the mutable
> version) as I wanted all the mutable methods use verbs for
> consistency.  I think unite is acceptable because it can be found in
> the dictionary and it is a verb.
>
> Notice that all the non-mutable methods use nouns: union,
> intersection, subtraction and symmetricSubtraction.
>
> I understand some may oppose to symmetricSubtraction saying that
> symmetricSubraction is not as common as "exclusive or".  However,
> using symmetricSubtraction is consistent with subtraction and it hints
> to a variation of the “subtraction" operation.  We will get used to it
> quickly / easily.
>
> The mutable methods all use verbs:  unite, intersect, subtract and symmetricSubtract.
>
> ALTERNATIVE 2
>
> Non-mutable
>
> -  func union(other: Self) -> Self
> +  func adding(other: Self) -> Self
>
> -  func intersect(other: Self) -> Self
> +  func intersecting(other: Self) -> Self
>
> -  func exclusiveOr(other: Self) -> Self
> +  func exclusiveOring(other: Self) -> Self
>
> -  func subtract(other: Self) -> Self
> +  func removing(other: Self) -> Self
>
> Mutable
>
> -  mutating func unionInPlace(other: Self)
> +  mutating func add(other: Self)
>
> -  mutating func intersectInPlace(other: Self)
> +  mutating func intersect(other: Self)
>
> -  mutating func exclusiveOrInPlace(other: Self)
> +  mutating func exclusiveOr(other: Self)
>
> -  mutating func subtractInPlace(other: Self)
> +  mutating func remove(other: Self)
>
> Comments: This alternative gives up on union in favor or add.  Many
> may not like this, that is why I have it as the second alternative.
> It brings back exclusiveOr and treats it as a verb.  Some may argue
> that exclusiveOr is a noun for the "exclusive or" operation.

If we are going to force Set fit the naming guidelines, I would prefer
to stay away from the mathematical terms altogether.

   func insertingContentsOf(other: Self) -> Self                 // union
   mutating func insertContentsOf(other)

   func members(in other: Self) -> Self                           // intersection
   mutating func removeMembers(notIn: other)

   func removingMembersAndAddingNonMembers(in other: Self) -> Self // symmetric difference
   mutating func removeMembersAndAddingNonMembers(in other: Self)

   func removingMembers(in other: Self) -> Self                    // subtract
   mutating func removeMembers(in other: Self)

If it would help with clarity, we could replace "in" with "foundIn"
above.

-- 
-Dave



More information about the swift-evolution mailing list