[swift-evolution] SetAlgebra naming update
Thorsten Seitz
tseitz42 at icloud.com
Fri Apr 1 11:19:51 CDT 2016
> Am 31.03.2016 um 19:53 schrieb Dave Abrahams <dabrahams at apple.com>:
>
>
>> on Thu Mar 31 2016, Thorsten Seitz <tseitz42-AT-icloud.com> wrote:
>>
>> Am 30. März 2016 um 17:48 schrieb Dave Abrahams <dabrahams at apple.com>:
>>
>> 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.
>>
>> "Those with side-effects should read as imperative verb phrases"
>
> “form <some-noun-phrase>” is an imperative verb phrase.
>
>> I expect a common verb to be chosen over an awkward, constructed one,
>> although I have to admit that the verb "intersect" is used only very
>> seldom if at all in set theory or geometry. Therefore you might have
>> a point with "intersect" having the wrong implication, but see below.
>>
>> (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.
>>
>> With a.intersection(b) I meant to extend your reasoning to the
>> non-mutating method.
>>
>> You surely do not expect the intersection of a and b to be non-empty
>> when calling the non-mutating method?
>
> No I do not.
>
>> Then why should you expect that in the mutating case?
>
> for the same reason that
>
> shape1.encloses(shape2)
>
> might return true or false but
>
> shape1.enclose(shape2)
>
> has to change shape1 so it encloses shape2.
Thanks! That's a very good example!
-Thorsten
>> Is it because the noun implies a current state whereas the verb should
>> be read as a command demanding to create a certain state? (I'm not a
>> native speaker, so please bear with me)
>
> I think that's a pretty good explanation.
>
> HTH,
>
> --
> Dave
More information about the swift-evolution
mailing list