[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