[swift-evolution] ed/ing, InPlace, Set/SetAlgebra naming resolution
Craig Cruden
ccruden at novafore.com
Fri Feb 12 17:15:19 CST 2016
An algorithm (as far as I know) is not inherently mutable. It is a process of apply a certain process (or a certain function) over and over again until you have a result.
If you processed it in writing (the common form of computing at the time) - you would write line after line of the results until you could break it down no farther (GCD).
Each step clearly documented, clearly written down (not erasing a value and inserting a new value).
Basically you are applying a function on smaller and smaller bits (recursion) and recursion is not a mutable concept.
But I think that is more than enough digression :p
> On 2016-02-13, at 5:21:46, Dave Abrahams via swift-evolution <swift-evolution at swift.org> wrote:
>
>
> on Fri Feb 12 2016, Craig Cruden <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>
>> Not to mention - mutating (in my limited and aged math knowledge) is
>> NOT mathematical (computer simulations might use math in simulations
>> which simulating something that mutates)
>>
>> Mathematicians (typically) don’t mutate - they might be mutants…. but
>> they don’t mutate their equations.
>>
>> When was the last time you saw a mutating equation? If equations
>> mutate then it makes it much more difficult to prove correctness.
>>
>> Probably why even OO programming languages don’t allow you to mutate
>> an Integer or Decimal ….. bad things can happen.
>>
>> Union and intersection have more in common with operations like + and
>> - which also do not mutate the values.
>
> Let's not go too far with this. Euclid invented the GCD algorithm,
> which was originally expressed iteratively and therefore can be seen to
> be mutating variables. The whole concept of “algorithm” was named after
> an arabic mathematician.
>
>>
>> :p
>>
>>>> Reasoning:
>>>>
>>>> * I think the -ing endings sound unnatural, stilted, and unmathematical. They make me wince.
>>>> * I think you have the nature of the words mis-assigned. In my
>>>> opinion in this rare case, union, intersection, and exclusiveOr act
>>>> as verbs as they are mathematical set operations. For example,
>>>> "what is the result of A union B?" is a reasonable thing to say to
>>>> a math person or put on an exam question, etc.
>>
>>>
>>
>>> On 2016-02-12, at 22:20:01, Thorsten Seitz via swift-evolution
>>> <swift-evolution at swift.org> wrote:
>>>
>>> I beg to disagree with your reasoning.
>>> I think "union" is more commonly used as a noun and "intersection"
>>> certainly is not a verb. Your example sounded weird for me (but
>>> maybe that's because I'm not a native speaker) and I would rather
>>> expect the question to be "What is the union of A and B?"
>>>
>>> -Thorsten
>>>
>>> Am 11.02.2016 um 20:09 schrieb Erica Sadun via swift-evolution
>>> <swift-evolution at swift.org
>>> <mailto:swift-evolution at swift.org <mailto:swift-evolution at swift.org>>>:
>>>
>>>> My expectations is that the standard operators act upon a set, changing the set.
>>>>
>>>> set1.union(with: set2) tells set1 to perform the union.
>>>> set1.unioned(with: set2) creates a new instance where set1 has been unioned with set 2.
>>>>
>>>> Naming: intersected, unioned, and exclusiveOred over intersecting,
>>>> unioning, exclusiveOring.
>>>> Mutating: union, intersection, exclusiveOr.
>>>> Non-Mutating, returning new value: unioned(with), intersected(with), exclusiveOred(with)
>>>>
>>>> Reasoning:
>>>>
>>>> * I think the -ing endings sound unnatural, stilted, and unmathematical. They make me wince.
>>>> * I think you have the nature of the words mis-assigned. In my
>>>> opinion in this rare case, union, intersection, and exclusiveOr act
>>>> as verbs as they are mathematical set operations. For example,
>>>> "what is the result of A union B?" is a reasonable thing to say to
>>>> a math person or put on an exam question, etc.
>>>>
>>>> Importantly, they produce significant side effects, and should be
>>>> treated as verbs that operate upon the receiver, updating the
>>>> receiver, establishing their use for mutating ops.
>>>>
>>>> Dave wrote:
>>>>>>> - use nouns for methods with no side effects (or only incidental ones, like logging)
>>>>>>> - use verbs for methods with significant side-effects
>>>>
>>>>
>>>> -- E
>>>>
>>>>> On Feb 11, 2016, at 9:52 AM, Dave Abrahams via swift-evolution
>>>>> <swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>>>>> <mailto:swift-evolution at swift.org <mailto: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 <https://gist.github.com/dabrahams/d872556291a3cb797bd5>
>>>>> <https://gist.github.com/dabrahams/d872556291a3cb797bd5 <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 <mailto:swift-evolution at swift.org>
>>>>> <mailto:swift-evolution at swift.org <mailto:swift-evolution at swift.org>>
>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>>>> <https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>>
>>>>
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>>>> <mailto:swift-evolution at swift.org <mailto:swift-evolution at swift.org>>
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>>> <https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>>
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>
> --
> -Dave
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160213/6898eea4/attachment.html>
More information about the swift-evolution
mailing list