On Sep 5, 2010, at 7:40 AM, Mark S. Miller wrote:

> http://wiki.ecmascript.org/doku.php?id=strawman:egal
> 
> I have previously taken the position on this list that we should not add a 
> third equality construct to JavaScript. However, it is relevant to several 
> other strawmen that are likely to advance -- hasCode, Maps and Sets. Also, 
> its absence repeatedly bites me. I often accidentally code === when I mean 
> Object.eq because it's so hard to remember when ==='s brokenness matters. 
> Nevertheless, I am still ambivalent about adding it as standard equipment. 
> Opinions?

I think it's nearly mandatory, as the equivalence relation paired with 
Object.hashcode. A hash function is only meaningful in the context of an 
equivalence relation.

Other possibilities:

- Make Object.hashcode pair with === or == instead of Object.eq: formally 
impossible, because neither is actually an equivalence relation. Less formally, 
possible at the cost of making it impossible to use NaN as a hash key, or 
distinguish 0 from -0 as hash keys.

- Make Object.hashcode correspond to an equivalence relation that is described 
but not provided as a predefined function - now actually using hashcode becomes 
needlessly complicated and error prone.

It might even be desirable to name Object.hashcode something that makes the 
relationship to eq clear - Object.eqHash? On the other hand, it seems somewhat 
unlikely that other hash/equivalence pairs will be introduced to the standard, 
so maybe it doesn't matter.

Regards,
Maciej



_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to