[swift-evolution] SetAlgebra naming update

Dave Abrahams dabrahams at apple.com
Wed Mar 30 10:48:23 CDT 2016


on Wed Mar 30 2016, Thorsten Seitz <tseitz42-AT-icloud.com> wrote:

>> Am 30.03.2016 um 16:49 schrieb Dave Abrahams <dabrahams at apple.com>:
>> 
>>> on Wed Mar 30 2016, Thorsten Seitz <tseitz42-AT-icloud.com> wrote:
>>> 
>>> That's certainly an improvement, but why "formIntersection" instead of
>>> "intersect" (in analogy to "subtract")?
>> 
>> 1. Consistency with union, which is more closely related than subtract.
>
> I'd prefer consistency with the verb rule here

Which rule is that?  As far as I can tell, this is consistent with all
the rules.

> (using formXXX only as last resort).

Though I prefer not to, you can look at this as a last resort if you
like; the alternative you're proposing has the wrong implication, so it
is not a candidate.  It would be like using “remainder” as a verb for
integers.  Yes, it's a legitimate verb, but it means the wrong thing
(see retail).

>> 2. "Intersect" actually has the wrong meaning as an imperative.  If you
>>   tell set A to intersect set B, and then ask whether A intersects B
>>   (!A.isDisjoint(with: B)), you would expect an answer of true.
>
> Sorry, but I do not agree. With that reasoning I would have to expect
> a.intersection(b) to be not empty.

Yes, that's exactly what I'm saying.  If you tell A to intersect B,
presumably when the call completes, A intersects B (i.e. has a non-empty
intersection).  That would imply an implementation like, e.g.

  mutating func intersect(other: Self) {
    self.formUnion(other)
  }
                   
which is almost the opposite of the desired implication.
-- 
Dave


More information about the swift-evolution mailing list