<div dir="ltr">On Tue, Sep 26, 2017 at 6:48 PM, Robert Bennett <span dir="ltr">&lt;<a href="mailto:rltbennett@icloud.com" target="_blank">rltbennett@icloud.com</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="auto"><div></div><div>formFilter reads really weirdly... the use of filter in `filter` is not as a noun, but as a verb — compare to e.g., formRemainder. Calling formFilter won’t create a filter, it will “do” a filter. Perhaps formByFiltering?</div></div></blockquote><div><br></div><div>That&#39;s interesting. I worry it might be too clever by half, though.</div><div><br></div><div>The prototypical &quot;form&quot; method is &quot;formUnion&quot;; it&#39;s so named because the term &quot;union&quot; is used in math as both noun and verb (&quot;a union b&quot;; &quot;the union of a and b&quot;) and is a term of art that doesn&#39;t lend itself to the noun/verb rule in Swift. Here, &quot;filter&quot; is a term of art (otherwise, it&#39;d be called &quot;filtered&quot;); now that &quot;filter&quot; is the non-mutating function (i.e., what should otherwise be a noun), there&#39;s no way to maintain the noun/verb rule in Swift. Therefore, without overthinking it, &quot;formFilter&quot;.</div><div><br></div><div>Note that it&#39;s not &quot;formUnion(with:)&quot;, just &quot;formUnion(_:)&quot;. As is the case with &quot;formUnion&quot;, no particular attempt is made here to turn this method name into an English phrase. The phrase &quot;by filtering&quot; very strongly suggests true-to-remove; that&#39;s the only way the term &quot;filtering&quot; is used in English. Here, we mean true-to-keep, and there&#39;s no way to express that with the English word &quot;filter&quot; between the receiver and the predicate with any sort of conjugation of the word or concise combination of helper words. The nearest good-English name might be something like &quot;formFilteredResultKeeping(where:)&quot;, which is clearly awful for other reasons.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="auto"><div><div class="gmail-h5"><div>On Sep 26, 2017, at 7:23 PM, Xiaodi Wu via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br><br></div><blockquote type="cite"><div><div dir="ltr">On Tue, Sep 26, 2017 at 6:14 PM, Ben Cohen via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">And here are my answers, in a separate email to maintain a shred of separation between objectivity and subjectivity :)<br>
<span><br>
&gt; On Sep 26, 2017, at 4:12 PM, Ben Cohen via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt; 1. Is it right to assert that with a “removing” operation, the closure should return `true` for removal?<br>
<br>
</span>Yes. If the closure returned false for removal a different, less readable, name would be needed for the method.<br></blockquote><div><br></div><div>Agree, yes.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span>
&gt; 2. Is it likely that users will want to switch from out-of- to in-place, and if so, will having to flip the closure cause confusion/bugs?<br>
<br>
</span>I don’t think so. While the argument for an in-place remove is partly that it’s more efficient than x = x.filter (in addition to reability/discoverability benefits), I think that once both an in- and out-of-place version are available, users will reach immediately for the one they want. The scenario where you were filtering, and then you realize you could do it in-place more efficiently, doesn’t seem to me like it will come up in day-to-day use.<span><br></span></blockquote><div><br></div><div>Unsure. Maybe and maybe, but I think the confusion/bugs would be limited if the full matrix of four operations exist.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span>
&gt; 3. Should we “complete” the matrix of 4 operations, or is it fine for it to have gaps?<br>
<br>
</span>I think filter(_:) and remove(where:) are sufficient. I don’t think we need to complete the set.</blockquote><div><br></div><div>Based on question (2), I would argue that the answer is yes.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span>
&gt; 4. If you are for completing, what should X and Y be called?<br>
&gt;<br>
<br>
</span>One of the reasons I _don’t_ think we should complete the set is that formFilter(_:) will take us into serious jumped-the-shark territory, naming-wise.<br>
<br>
I think there’s an argument for never having had filter, and always having had remove/removed (or possibly select/selected), but don’t think this is important enough to clear the bar for a rename of this magnitude.</blockquote><div><br></div><div>IMO, they should be called removing(where:) [removed(where:) reads weirdly in conjunction with the preceding receiver] and formFilter(_:). Hundreds of messages finally settled on &quot;form&quot; as the in-place verb of choice where the noun can&#39;t ordinarily be verbed. No point in being shy about it now: that&#39;s the Swift way, wear it proudly.</div></div></div></div>
</div></blockquote></div></div><blockquote type="cite"><div><span>______________________________<wbr>_________________</span><span class="gmail-"><br><span>swift-evolution mailing list</span><br><span><a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a></span><br><span><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-<wbr>evolution</a></span><br></span></div></blockquote></div></blockquote></div><br></div></div>