I actually agree on this, but Set.has() is misleading then, imho. Shouldn't be specified that `has()` is key related and `contains()` is value related? Also a "magic" Object.has(obj, key) with smart obj recognition and Object.contains(obj, value) would be probably cool<div class="gmail_extra">
<br><br><div class="gmail_quote">On Fri, Nov 2, 2012 at 2:30 PM, Allen Wirfs-Brock <span dir="ltr"><<a href="mailto:allen@wirfs-brock.com" target="_blank">allen@wirfs-brock.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word"><br><div><div class="im"><div>On Nov 2, 2012, at 10:56 AM, Jason Orendorff wrote:</div><br><blockquote type="cite">On Fri, Nov 2, 2012 at 12:29 PM, Domenic Denicola <span dir="ltr"><<a href="mailto:domenic@domenicdenicola.com" target="_blank">domenic@domenicdenicola.com</a>></span> wrote:<br>
<div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>> If we call it "has", should we also rename String.prototype.contains?<br>
<br>
</div>I'd say no; the distinction between collections "having" an element and strings "containing" a substring seems very sensible. It's a bit more awkward to say a string "has" a substring, and a string is definitely not a collection of substrings in any reasonable sense.<br>

</blockquote><div><br>Well, you could also note that array.has(x) looks for a particular value, while map.has(x) looks for a particular key.<br><br>But that's not the point. There's no common formal contract implemented by all these methods; what they share is an informal "hey, look in this thing, and tell me if you see that thing" vibe.<br>
</div></div></div></blockquote><div><br></div></div><div>There is no verifiable formal contract.  But there can be an informal contract.  In my experience, it is very important when using a dynamic language to recognize and try to support such informal contracts. </div>
<div><br></div><div>All the uses of "has" we have defined so far are about the "keys".  Having one place that is about the "values" to create unnecessary confusion</div><div><br></div><div>Note that we (the JS/ES designers) already have a history of being being inconsistent in our use of names.  Consider String indexOf and Array indexOf they are named the same and appear to have signatures.  But they logically are doing quite different things.  String indexOf is looking for the index of the first element of a subsequence of character elements that matches a specific character sequence.  Array indexOf is looking for the index of a single element that contains a specific value.  You might want to implement a logically similar subsequence search for Array's but if you do, you can't call it indexOf because that name was already used for something with different semantics.  We should try to do better as people for our example.</div>
<span class="HOEnZb"><font color="#888888"><div><br></div><div>Allen</div><div><br></div><div><br></div><div><br></div></font></span></div></div><br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>