[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