On Jan 13, 2013, at 5:14 PM, Brandon Benvie wrote:

> delete is supposed to return whether the item was in the collection to delete 
> or not, which otherwise would require using has to check for before deleting. 
> I don't know how useful the functionality is, but wanted to note it since 
> it'd be lost with this change. Chaining `clear` is an easy definitely though.

Cascading delete and delete with existential result are clearly alternatives 
that can't both be accommodated in the collection API. 

The existential result alternative is an optimization that saves doing two hash 
probes of a collection in certain circumstances. The attractive thing about it 
is that it is an optimization that you can't make in ES code if you only have 
has and and cascading delete.  So, in a perf critical situation it provides 
value that a ES programmer could not obtain without it. 

However a  has/delete sequence can be fairly easily optimized at an 
implementation level. Just cache the last hash probe and check if the next 
probe is for the same key.  But, unless it is a common perf bottleneck (or 
appears in an important benchmark) implementation are unlike to actually 
implement such an optimization.

So, we can design the optimization into the Map API by having Map delete return 
a Boolean or we can have a cascading Map delete and depend upon implementations 
to optimize successive lookups of the same key, if it proves important.

I don't yet have a strong preference between those two alternatives.

Allen









> 
> 
> On Sun, Jan 13, 2013 at 7:58 PM, Tab Atkins Jr. <[email protected]> wrote:
> On Sun, Jan 13, 2013 at 4:44 PM, Allen Wirfs-Brock
> <[email protected]> wrote:
> > At the last TC39 meeting, it was agreed tothat the set/add methods would 
> > return the collection that to which something is being added.
> >
> > This supports code patterns like:
> >
> > someMap.set(key1,value1).set(key2,value3);
> >
> > In making this change to the spec. I noticed several other methods that 
> > could reasonably be used in this same pattern. For example:
> >
> > someMap.clear().set(aKey, aValue);
> >
> > someSet.delete(oldMember).add(newMember);
> >
> > Are there any objections to making the clear and delete methods of 
> > Map/WeakMap/Set also return the collection, just like set/add?
> 
> None from me.  If I was a TC39 member, I'd object to *not* adding them.  ^_^
> 
> ~TJ
> _______________________________________________
> 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