On Dec 3, 2013, at 11:28 AM, Andrea Giammarchi wrote:

> trying to understand in order to update a polyfill != emotional attached to 
> mixin
> 
> I find mixin useful for what it has always done until now (that is 
> temporarily gone and it is un-shimmable due this new toMethod entry for what 
> I can tell so it will likely not be adopted later on)

Object.mixin was always unshimmable because of the its super rebinding 
semantics. See 
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-mixinproperties 

> 
> Still very looking forward for a concrete example where `super()` that points 
> to a different one after `toMethod()` is desired, thanks.

The the last meeting we also decided to eliminate the comparator argument to 
the Map constructor because it only was useful for the case where you wanted to 
memoize -0.

Here is a "mixin" object that can be used to selectively add that support to 
any Map instance to any Map subclass's prototype or to any object that exposes 
the Map interface:


let MapM0 = (memo=> ({
   has (key) {
         if (Object.is(key, -0.0) return memo.has(this);
         return super(key);
   },
   get (key) {
         if (Object.is(key, -0.0) return memo.get(this);
         return super(key);
   },
   set (key, value) {
         if (Object.is(key, -0.0) return memo.set(this, value);
         return super(key, value);
   }
}))(new WeakMap);

Just mixin (using toMethod, or your own implementation of Object.mixin) the 
properties of MapM0.

Allen

> 
> On Tue, Dec 3, 2013 at 11:21 AM, Domenic Denicola 
> <[email protected]> wrote:
> I wish we'd never switched from Object.define to Object.mixin, since people 
> have such an emotional attachment to their conception of what the word 
> "mixin" means and it causes reactions like this. In that sense, I'm glad it's 
> gone from ES6.
> 
> From: es-discuss <[email protected]> on behalf of Andrea 
> Giammarchi <[email protected]>
> Sent: Tuesday, December 03, 2013 14:18
> To: Brendan Eich
> Cc: [email protected]
> Subject: Re: any toMethod() use case ?
>  
> I am the author of one of those github `Object.mixin` "wannabe shim" and this 
> is why I'd like to know how crucial/relevant would this toMethod be for the 
> implementation because it's un-shimmable for what I can tell if not swapping 
> a global `super` reference at runtime per each wrapped method: a complete 
> no-go that TypeScript itself should never adopt in my opinion.
> 
> Moreover, I believe mixins should not bring multiple inheritance but rather 
> enrich objects and if a mixin calls its parent, that should be the expected 
> parent no matter where the mixin has been used to enrich another object.
> 
> This is why I am having some difficulty imaging a scenario where toMethod is 
> needed and still I haven't seen a code example that would reflect some 
> real-world scenario/case.
> 
> I am just trying to understand and nothing else. Thanks for any example/piece 
> of code that shows why toMethod is needed/wanted/desired instead of 
> static/explicit super.method calls.
> 
> 
> 
> On Tue, Dec 3, 2013 at 11:07 AM, Brendan Eich <[email protected]> wrote:
> Andrea Giammarchi wrote:
> Thanks Allen but you mentioned `Object.mixin` twice while this has been 
> abandoned
> 
> No, deferred -- but why does ES6 status matter? You seem to be impeaching 
> toMethod not because it isn't useful, as Allen showed, but because something 
> that would need it if self-hosted (Object.mixin) isn't standardized in ES6 as 
> well. That doesn't make sense. If Object.mixin is in ES6, one use-case for 
> toMethod is already "done".
> 
> Anyway, Object.mixin should be done on github and win adoption. Probably 
> libraries will do their own variations. They all need toMethod to cope with 
> super.
> 
> /be
> 
> 
> _______________________________________________
> 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