Separating a Hash type from Object

Jason Orendorff jason.orendorff at
Wed May 30 17:20:14 PDT 2007

On 5/29/07, Brendan Eich <brendan at> wrote:
> * key/value type parameterization, hashcode callback function
> parameterization
> * defaults to intrinsic::=== and intrinsic::hashcode for identity and
> hashing

OK, it strikes me as a little weird, now, to use intrinsic::=== and
intrinsic::hashcode() here.

Java, Python, and Ruby let individual *classes* (rather than individual
hash tables) override hash() and equals().  I think this supports
generic code better.

  function uniq(values) {
      var d : Dict = {};  // nothing special here
      for each (var v in values)
          d.put(v, true);
      return d.keys();

Also, if I were distributing a JavaScript library, I would be happier
saying "you can use FooBar objects as hash table keys" than
"if you want to use a FooBar as a hash table key, you need to pass
these two magic functions to the Dictionary constructor when you
create the Dictionary: new Dictionary(FooBar.eq, FooBar.hash)".


More information about the Es4-discuss mailing list