On that topic, you mentioned earlier that you&#39;ve asked someone involved in the decision to explain why we can&#39;t have a term-of-art InPlace exception. That would be enormously beneficial as it seems we&#39;ve returned once again to: &quot;InPlace isn&#39;t so bad&quot;!<br><br>It&#39;s difficult to advance alternatives clearly superior to InPlace while the objection to its use in this context originating from the Inner Sanctum of Swiftiness[TM] remains opaque.<br><br><br><div class="gmail_quote"><div dir="ltr">On Mon, Feb 15, 2016 at 2:32 PM Dave Abrahams via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
on Mon Feb 15 2016, Austin Zheng &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
<br>
&gt; +1. Would rather see us retain the (IMHO) correct math-based nomenclature,<br>
&gt; and come up with rules for handling cases where there are &#39;terms of art&#39;<br>
&gt; that don&#39;t fit neatly into the standard ruleset.<br>
<br>
Of course, that&#39;s what &quot;InPlace&quot; was supposed to do.<br>
<br>
&gt;<br>
&gt; Austin<br>
&gt;<br>
&gt; On Mon, Feb 15, 2016 at 11:46 AM, Xiaodi Wu via swift-evolution &lt;<br>
&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; It pains me that well-known math terms and even whole protocols get lopped<br>
&gt;&gt; off because of vagaries of the English language. New thought prompted by<br>
&gt;&gt; some of these suggestions:<br>
&gt;&gt;<br>
&gt;&gt; There&#39;s a fairly circumscribed number of commonly used mathematical terms<br>
&gt;&gt; of art. These describe for the most part functions for which there are no<br>
&gt;&gt; noun/verb pairs. Suppose then, we have a rule:<br>
&gt;&gt;<br>
&gt;&gt; Define these mathematical functions only outside types, as though they<br>
&gt;&gt; were operators. If (as it seems), operators are an acceptable option for<br>
&gt;&gt; Set but for the nomenclature, surely these functions can be acceptable as<br>
&gt;&gt; well. Then you would have:<br>
&gt;&gt; union(a, b) // non-mutating<br>
&gt;&gt; union(&amp;a, b) // mutating<br>
&gt;&gt;<br>
&gt;&gt; This is unambiguous, terse, conformant to expectations arising from<br>
&gt;&gt; familiarity with math, and recognizably English, and you can still have a<br>
&gt;&gt; SetAlgebra protocol if it can ensure these functions exist for conforming<br>
&gt;&gt; types as Equatable ensures ==. &quot;Pollution&quot; of the global scope would be<br>
&gt;&gt; limited to commonly used math terms, which should not be coopted for<br>
&gt;&gt; another purpose in any case.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Mon, Feb 15, 2016 at 1:17 PM Dave Abrahams via swift-evolution &lt;<br>
&gt;&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; on Mon Feb 15 2016, Xiaodi Wu &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt; Agreed that &quot;union&quot; creates an expectation that it&#39;s non-mutating.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; There&#39;s no real point in pushing back on whether UIs are more or less<br>
&gt;&gt;&gt; &gt; important for Swift than math.<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Problem is, the moment you name something SetAlgebra, you&#39;ve set user<br>
&gt;&gt;&gt; &gt; expectations that it&#39;s a &#39;math API&#39;. Those ain&#39;t UI terms.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Yep.  As I mentioned in<br>
&gt;&gt;&gt; &lt;<br>
&gt;&gt;&gt; <a href="http://news.gmane.org/find-root.php?message_id=m2pow033r1.fsf%40eno.apple.com" rel="noreferrer" target="_blank">http://news.gmane.org/find-root.php?message_id=m2pow033r1.fsf%40eno.apple.com</a><br>
&gt;&gt;&gt; &gt;,<br>
&gt;&gt;&gt; we have a semantic muddle here.  Given where this is all headed, I am<br>
&gt;&gt;&gt; somewhat inclined to retire the SetAlgebra protocol (it only seems to<br>
&gt;&gt;&gt; have 3-4 uses on github), but renaming it could be another viable<br>
&gt;&gt;&gt; option.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt; On Mon, Feb 15, 2016 at 11:25 AM Dave Abrahams via swift-evolution &lt;<br>
&gt;&gt;&gt; &gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; on Mon Feb 15 2016, Maximilian Hünenberger &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;<br>
&gt;&gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt; I also prefer (2). Isn&#39;t &quot;union&quot;, &quot;intersection&quot;, ... a &quot;Term of<br>
&gt;&gt;&gt; Art&quot;?<br>
&gt;&gt;&gt; &gt;&gt; &gt; See the guidelines under &quot;Stick to the established meaning&quot;.<br>
&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt; So we should stick to the mathematical naming.<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; My understanding of the rationale for the current direction is that the<br>
&gt;&gt;&gt; &gt;&gt; domain of building GUI apps is more important than that of math, so the<br>
&gt;&gt;&gt; &gt;&gt; look and feel of sets should match those of most other (non-math) APIs.<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt; Since these terms almost always return a new instance we should have<br>
&gt;&gt;&gt; &gt;&gt; &gt; an obvious mutating version with an &quot;inPlace&quot; suffix.<br>
&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt; - Maximilian<br>
&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; Am 14.02.2016 um 22:37 schrieb Xiaodi Wu via swift-evolution<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; From a 10,000-ft view, I&#39;d suggest that the noun/verb rule<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; consistently runs into a problem with mathematical terms.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; In general, mathematical functions don&#39;t have verb forms. You<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; &#39;compute&#39; the reciprocal, or &#39;find&#39; the reciprocal, or &#39;take&#39; the<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; reciprocal, you don&#39;t &#39;reciprocate&#39; or &#39;reciprocalize&#39;. Likewise for<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; trigonometric functions, etc. Nor can you really &#39;cross produce&#39;...<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; So consistent is this trend that where two words might be noun/verb<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; counterparts, like intersect/intersection and<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; transform/transformation, common math usage treats both as<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; acceptable nouns.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; In colloquial usage, you might verb the noun, but then by definition<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; the verb and noun become the same. Then, to generate a noun<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; phrase/participle/etc. that looks different from the verb, you have<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; to noun-ify the verbed noun.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; Without an exception for mathematical function names, the only<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; solution to fulfill these new Swift rules are clobbering the<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; well-known math name or not using the math name at all. Indeed all<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; proposed solutions so far come down to one of four options, either<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; applied globally or only to sets for now, punting the rest down the<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; road:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; (1) Abandon the rule, making a new one (e.g.: .=)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; (2) Make an exception to the rule for math function names<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; (3) Generate the least offensive noun-ified verbed nouns based on<br>
&gt;&gt;&gt; math<br>
&gt;&gt;&gt; &gt;&gt; function names<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; (4) Don&#39;t use math function names<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; (1) is off the table, according to the core team. My vote at this<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; point is for (2), and I see that a few others have voiced that<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; opinion. It&#39;d be nice to get a sense from the core team if that is<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; even a possibility. (3) has elicited a lot of discussion and<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; visceral reactions. (4) might be workable for sets alone but surely<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; can&#39;t be a generalized solution for all mathematical concepts to be<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; encountered in Swift.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; On Sun, Feb 14, 2016 at 3:14 PM Tyler Fleming Cloutier via<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; swift-evolution<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt; On Feb 14, 2016, at 12:48 PM, Dave Abrahams<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt; &lt;<a href="mailto:dabrahams@apple.com" target="_blank">dabrahams@apple.com</a>&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt; on Sun Feb 14 2016, Tyler Fleming Cloutier<br>
&gt;&gt;&gt; &lt;cloutiertyler-AT-aol.com&gt;<br>
&gt;&gt;&gt; &gt;&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; On Feb 14, 2016, at 8:27 AM, Dave Abrahams<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; &lt;<a href="mailto:dabrahams@apple.com" target="_blank">dabrahams@apple.com</a>&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; on Sat Feb 13 2016, Tyler Fleming Cloutier<br>
&gt;&gt;&gt; &gt;&gt; &lt;cloutiertyler-AT-aol.com&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; I would, personally, be very careful about discarding the<br>
&gt;&gt;&gt; &gt;&gt; mathematical<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; terms since they are so widely used and understood.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; IMO it&#39;s better to leave them aside than to use them in<br>
&gt;&gt;&gt; “creative”<br>
&gt;&gt;&gt; &gt;&gt; ways<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; that might be misleading.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; Agreed. I’m all for that.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; One issue is that it’s going to be hard to search for the<br>
&gt;&gt;&gt; &gt;&gt; operation I<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; want considering I won’t be looking for &quot;func<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; invertingMembershipOfContentsOf(other: Self) -&gt; Self”. I’m<br>
&gt;&gt;&gt; &gt;&gt; concerned<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; people are going to have to do mental gymnastics to build the<br>
&gt;&gt;&gt; map<br>
&gt;&gt;&gt; &gt;&gt; from<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; math term to Swift function every time they want to look for a<br>
&gt;&gt;&gt; set<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; operation method. “func invertingMembershipOfContentsOf(other:<br>
&gt;&gt;&gt; &gt;&gt; Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; -&gt; Self” doesn’t exactly seem to fit in the commonly held Venn<br>
&gt;&gt;&gt; &gt;&gt; diagram<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; mental model of set operations. You could always have a<br>
&gt;&gt;&gt; &gt;&gt; documentation<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; comment that specifies the mathematical term so that people<br>
&gt;&gt;&gt; didn’t<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; have to double check themselves every time.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; That being said, if the autocomplete issue is not a concern,<br>
&gt;&gt;&gt; I’m of<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; the opinion that the names Ricardo proposed are short, clear,<br>
&gt;&gt;&gt; and<br>
&gt;&gt;&gt; &gt;&gt; are<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; not so hard to fit to my Venn diagram mental model.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; +1<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; However, I tend to think that if there has to be this much<br>
&gt;&gt;&gt; dancing<br>
&gt;&gt;&gt; &gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; name a set of fundamental operations, the guidelines aren’t<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; accomplishing their goal.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; I can&#39;t disagree.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; It’s going to make it that much harder for people do design<br>
&gt;&gt;&gt; their<br>
&gt;&gt;&gt; &gt;&gt; own<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; APIs. I&#39;m having quite a time trying to conform Mattt’s Surge<br>
&gt;&gt;&gt; API<br>
&gt;&gt;&gt; &gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; the guidelines.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Please explain in detail.  Without details we don&#39;t know what&#39;s<br>
&gt;&gt;&gt; &gt;&gt; wrong<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; with the guidelines.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; Ah, I apologize. I’ve gone into detail about this API on the list<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; before, but I should have included the details here.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; Here are my previous posts:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; <a href="https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160118/007560.html" rel="noreferrer" target="_blank">https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160118/007560.html</a><br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; &lt;<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; <a href="https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160118/007560.html" rel="noreferrer" target="_blank">https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160118/007560.html</a><br>
&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; Basically the issues come down to the following. The Accelerate<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; framework typical operates in a non-mutating way. This means<br>
&gt;&gt;&gt; that my<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; API only has non mutating member functions and I should use the<br>
&gt;&gt;&gt; &gt;&gt; ed/ing<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; rule according to the guidelines to name my methods.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; This is very difficult for some methods. I’m able to frequently<br>
&gt;&gt;&gt; get<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; around the problem for things like “sin” or “arctan” by keeping<br>
&gt;&gt;&gt; them<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; as global functions, but I can’t do that for a number of<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; methods. Consider:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; remainder<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; dot (returns a scalar, thus there can’t be a mutating version, so<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; should I just call it dot? Guidelines don’t really comment on<br>
&gt;&gt;&gt; this)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; mean (same as above)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; cross<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; reciprocal<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; threshold<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; copysign<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; fastFourierTransform<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; pow (arguably the method version should be called raisedTo)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; I could force all these to be global functions only, but these<br>
&gt;&gt;&gt; are<br>
&gt;&gt;&gt; &gt;&gt; not<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; as cut and dry as “sin” or “arctan”. I feel like I’d be<br>
&gt;&gt;&gt; splitting my<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; API up into two parts just based on the fact that it’s difficult<br>
&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; use the ed/ing rule. That makes it very difficult for users to<br>
&gt;&gt;&gt; find<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; certain functions in my API.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; In this case there are no corresponding mutating operations<br>
&gt;&gt;&gt; because<br>
&gt;&gt;&gt; &gt;&gt; of<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; the way Accelerate works, but one could certainly imagine an API<br>
&gt;&gt;&gt; with<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; mutating counterparts. The way I read the guidelines, they seem<br>
&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; imply I should use ed/ing regardless of whether there is a<br>
&gt;&gt;&gt; mutating<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; counterpart. I’d love to hear your thoughts on this.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt; As long as the ones without side effects read as noun phrases and<br>
&gt;&gt;&gt; the<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt; ones with side-effects read as verb phrases, you&#39;re good.  No<br>
&gt;&gt;&gt; ed/ing<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt; needed.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; Ah yes, you are very right. Still what would the mutating versions<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; of remainder, fastFourierTransform, or reciprocal be? getRemainder?<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; applyFastFourierTransform? reciprocate? I suppose those aren’t so<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; bad.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; I also suppose cross could become x.crossProduct(with: y) and<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; copysign, x.copyingSign(of: y). Seems a little verbose, but it does<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; the job.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; Thanks,<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; Tyler<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; Thanks,<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt; Tyler<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Tyler<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On Feb 13, 2016, at 9:09 PM, Ricardo Parada via<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; swift-evolution<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Hi Dave,<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; I would be okay with staying away from the mathematical terms<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; similar to what you are suggesting except that the union can<br>
&gt;&gt;&gt; still<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; be made more concise if you use merged / merge for the base<br>
&gt;&gt;&gt; name<br>
&gt;&gt;&gt; &gt;&gt; and<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; shorten the labels to a bare minimum without loosing<br>
&gt;&gt;&gt; clarity.  In<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; addition, the merge can have a second parameter with a<br>
&gt;&gt;&gt; default to<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; false in order to implement the symmetric difference<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; (a.k.a. exclusive or).  Recall that symmetric difference is<br>
&gt;&gt;&gt; the<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; union of two sets and then removing the intersection (or<br>
&gt;&gt;&gt; members<br>
&gt;&gt;&gt; &gt;&gt; in<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; common).  I think it looks perfect (concise and clear).  What<br>
&gt;&gt;&gt; does<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; everybody else think?<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Non-mutable<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; let union =                    a.merged(with: b)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; let intersection =             a.members(in: b)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; let difference =               a.removingMembers(in: b)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; let symmetricDifference =      a.merged(with: b,<br>
&gt;&gt;&gt; &gt;&gt; removingMembersInCommon: true)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Mutable (In-Place)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; a.merge(with: b)               // union in-place<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; a.removeMembers(notIn: b)      // intersect in-place<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; a.removeMembers(in: b)         // difference in-place<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; a.merge(with: b, removeMembersInCommon: true)  // symmetric<br>
&gt;&gt;&gt; &gt;&gt; difference in-place<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Ricardo Parada<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On Feb 13, 2016, at 1:16 PM, Dave Abrahams via<br>
&gt;&gt;&gt; swift-evolution<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;mailto:<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; on Fri Feb 12 2016, Ricardo Parada &lt;<br>
&gt;&gt;&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;mailto:<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Hi all,<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; I can’t make up my mind.  Let me propose two different<br>
&gt;&gt;&gt; &gt;&gt; alternatives<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; that I’m not sure if they have been considered:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ALTERNATIVE 1<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Non-mutable (noun-based)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  func union(other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  func union(other: Self) -&gt; Self           Assumes union<br>
&gt;&gt;&gt; is a<br>
&gt;&gt;&gt; &gt;&gt; noun, i.e. not a verb<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  func intersect(other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  func intersection(other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  func subtract(other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  func subtraction(other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  func exclusiveOr(other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  func symmetricSubtraction(other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Mutable (verb-based)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  mutating func unionInPlace(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  mutating func unite(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  mutating func intersectInPlace(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  mutating func intersect(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  mutating func subtractInPlace(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  mutating func subtract(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  mutating func exclusiveOrInPlace(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  mutating func symmetricSubtract(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Comments:<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; With this alternative we keep the union name which I assume<br>
&gt;&gt;&gt; is<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; popular.  However, one has to accept unite as a verb (for<br>
&gt;&gt;&gt; the<br>
&gt;&gt;&gt; &gt;&gt; mutable<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; version) as I wanted all the mutable methods use verbs for<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; consistency.  I think unite is acceptable because it can be<br>
&gt;&gt;&gt; &gt;&gt; found in<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; the dictionary and it is a verb.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Notice that all the non-mutable methods use nouns: union,<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; intersection, subtraction and symmetricSubtraction.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; I understand some may oppose to symmetricSubtraction saying<br>
&gt;&gt;&gt; that<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; symmetricSubraction is not as common as &quot;exclusive or&quot;.<br>
&gt;&gt;&gt; &gt;&gt; However,<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; using symmetricSubtraction is consistent with subtraction<br>
&gt;&gt;&gt; and<br>
&gt;&gt;&gt; &gt;&gt; it hints<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; to a variation of the “subtraction&quot; operation.  We will get<br>
&gt;&gt;&gt; &gt;&gt; used to it<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; quickly / easily.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; The mutable methods all use verbs:  unite, intersect,<br>
&gt;&gt;&gt; subtract<br>
&gt;&gt;&gt; &gt;&gt; and symmetricSubtract.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ALTERNATIVE 2<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Non-mutable<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  func union(other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  func adding(other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  func intersect(other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  func intersecting(other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  func exclusiveOr(other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  func exclusiveOring(other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  func subtract(other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  func removing(other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Mutable<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  mutating func unionInPlace(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  mutating func add(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  mutating func intersectInPlace(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  mutating func intersect(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  mutating func exclusiveOrInPlace(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  mutating func exclusiveOr(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -  mutating func subtractInPlace(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +  mutating func remove(other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Comments: This alternative gives up on union in favor or<br>
&gt;&gt;&gt; add.<br>
&gt;&gt;&gt; &gt;&gt; Many<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; may not like this, that is why I have it as the second<br>
&gt;&gt;&gt; &gt;&gt; alternative.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; It brings back exclusiveOr and treats it as a verb.  Some<br>
&gt;&gt;&gt; may<br>
&gt;&gt;&gt; &gt;&gt; argue<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; that exclusiveOr is a noun for the &quot;exclusive or&quot; operation.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; If we are going to force Set fit the naming guidelines, I<br>
&gt;&gt;&gt; would<br>
&gt;&gt;&gt; &gt;&gt; prefer<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; to stay away from the mathematical terms altogether.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; func insertingContentsOf(other: Self) -&gt; Self<br>
&gt;&gt;&gt;  //<br>
&gt;&gt;&gt; &gt;&gt; union<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; mutating func insertContentsOf(other)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; func members(in other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt;  // intersection<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; mutating func removeMembers(notIn: other)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; func removingMembersAndAddingNonMembers(in other: Self) -&gt;<br>
&gt;&gt;&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; // symmetric difference<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; mutating func removeMembersAndAddingNonMembers(in other:<br>
&gt;&gt;&gt; Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; func removingMembers(in other: Self) -&gt; Self<br>
&gt;&gt;&gt; &gt;&gt; // subtract<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; mutating func removeMembers(in other: Self)<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; If it would help with clarity, we could replace &quot;in&quot; with<br>
&gt;&gt;&gt; &gt;&gt; &quot;foundIn&quot;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; above.<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -Dave<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; swift-evolution mailing list<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;mailto:<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; &lt;<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a>&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; swift-evolution mailing list<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; -Dave<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt;&gt; -Dave<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; swift-evolution mailing list<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; swift-evolution mailing list<br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt;&gt; &gt;&gt; &gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
&gt;&gt;&gt; &gt;&gt; &gt; _______________________________________________<br>
&gt;&gt;&gt; &gt;&gt; &gt; swift-evolution mailing list<br>
&gt;&gt;&gt; &gt;&gt; &gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt;&gt; &gt;&gt; &gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; --<br>
&gt;&gt;&gt; &gt;&gt; -Dave<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; &gt;&gt; swift-evolution mailing list<br>
&gt;&gt;&gt; &gt;&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt;&gt; &gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt;&gt; &gt; swift-evolution mailing list<br>
&gt;&gt;&gt; &gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt;&gt; &gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; -Dave<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; swift-evolution mailing list<br>
&gt;&gt;&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; swift-evolution mailing list<br>
&gt;&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt; _______________________________________________<br>
&gt; swift-evolution mailing list<br>
&gt; <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br>
--<br>
-Dave<br>
<br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div>