An there is nothing stopping someone from defining their own map class 
(possibly by subclassing Map) that has its own hashing and comparison policies. 
JS implementations + ES6 functionality are good enough that we don't have to 
wait for such things to be built-in.

Allen


On Apr 6, 2014, at 3:51 PM, Rick Waldron wrote:

> 
> 
> On Sunday, April 6, 2014, K. Gadd <[email protected]> wrote:
> I guess the analog for this in traditional JS 'Object' instances is
> that when you use the [] operator, i.e. obj[valueObject], it actually
> does obj[valueObject.toString()], so you can control the 'hashing
> function' in a sense by overriding toString. It seems natural to want
> something equivalent here, preferably not based on strings... (though
> I don't know how people feel about exposing hash internals and saying
> 'your hash key needs to be an integer')
> 
> Map would certainly be far more useful if it had support for
> customizable hashing, 
> 
> Existing hash code related work:
> 
> http://wiki.ecmascript.org/doku.php?id=strawman:encapsulated_hashcodes
> 
> http://wiki.ecmascript.org/doku.php?id=proposals:hashcodes
> 
> There was also discussion when parameterization of the Map and Set comparator 
> was first added, but custom comparator functions were deferred until some 
> time in which object hash codes are available: 
> https://github.com/rwaldron/tc39-notes/blob/master/es6/2013-01/jan-29.md#43-parameterize-the-equivalence-operator-for-mapset
> 
> Rick
> 
> 
>  
> otherwise it's just a slightly faster
> replacement for Objects with cleaner semantics. Maybe making it
> possible to get the same value back using two different keys that
> don't compare the same with === is against the purposes here, though.
> 
> On Sat, Apr 5, 2014 at 10:21 PM, Benjamin (Inglor) Gruenbaum
> <[email protected]> wrote:
> > I'd like to raise an issue with ES7 value objects with maps raised here:
> >
> > http://esdiscuss.org/topic/maps-with-object-keys
> >
> > To save you all time, let me sum things up:
> >
> > ES6 maps don't solve a particular (but common) issue for me - using compound
> > objects as keys. I do a lot of statistical analysis and I need keys to be
> > compound tuples or other values. This is currently not possible with ES6
> > since map key equality is checked with `===` so it is always reference
> > equality
> >
> > ES7 introduces value objects - which are really cool anyway. This allows for
> > compound keys.which partially solves my issue because value keys are
> > compared structurally with `===`.
> >
> > However, it does not let me index on partial information (described in my
> > last commend on that issues). Since it is impossible to override `===` in
> > value objects from what I understand - It would be impossible for me to use
> > partial objects as keys.
> >
> > To illustrate, if for example I have a lot of 10 dim vectors, and I want to
> > index them as keys based on their first two dimensions - it is impossible at
> > the moment and I have to project them into their 2d counterparts which have
> > no further use for me.
> >
> > Is this somehow addressed? I'm unsure where to look for answers. It seems
> > natural to me to allow specifying a hashing function in the `Map`
> > constructor (rather than on every type) to solve this particular (but again,
> > rather common in code that does crunching) problem.
> >
> > Thanks,
> > Benjamin
> >
> > _______________________________________________
> > es-discuss mailing list
> > [email protected]
> > https://mail.mozilla.org/listinfo/es-discuss
> >
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss

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

Reply via email to