[swift-evolution] ed/ing, InPlace, Set/SetAlgebra naming resolution
Ricardo Parada
rparada at mac.com
Fri Feb 12 22:28:10 CST 2016
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.
> On Feb 11, 2016, at 11:52 AM, Dave Abrahams via swift-evolution <swift-evolution at swift.org> wrote:
>
>
> Hi All,
>
> The API guidelines working group took up the issue of the InPlace suffix
> yesterday, and decided that it was not to be used anywhere in the
> standard library. We are planning to apply the changes shown here
> <https://gist.github.com/dabrahams/d872556291a3cb797bd5> to the API of
> SetAlgebra (and consequently Set) to make it conform to the guidelines
> under development.
>
> Comments welcome as usual,
>
> --
> -Dave
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160212/9e164ee7/attachment.html>
More information about the swift-evolution
mailing list