On Nov 10, 2011, at 2:07 PM, Brendan Eich wrote:

> On Nov 10, 2011, at 7:59 AM, Mark S. Miller wrote:
> 
>> My previous proposal for class-like sugar for traits composition was not 
>> popular. Whereas, in the absence of problem #5, I suspect the traitsjs 
>> library would be. As previously observed on this list, traitsjs is more 
>> JavaScripty. Ideal would be for JSVMs to magically make traitsjs efficient 
>> without requiring any language changes. If this is infeasible, perhaps we 
>> should instead be looking for the minimal language change that would enable 
>> a revision of traitsjs to run efficiently on ES-nest-next JSVMs.
> 
> The http://brendaneich.com/2011/01/harmony-of-my-dreams/#sharp_functions 
> proposal, while out of date now, did try to support concise joined/frozen 
> functions, joined up to the nearest relevant closure. If that is the 
> constructor, you still have a sharp function per method per instance, but if 
> the methods use only |this| and their parameters.

Oops, lost the end of the last sentence: ", then you win".

/be


> 
> How HoBD sharp functions handle |this| was not totally clear. We talked at 
> the January meeting about supporting only lexical |this|, only caller |this|, 
> and (perhaps in March) "soft binding" where lexical |this| is the default but 
> it can be overridden by caller |this|.
> 
> 
>> I say ES-next-next because it is too late to consider any such language 
>> change for ES-next. However, implementation experiments need not wait.
> 
> To revive the HoBD sharp-function idea at this point, I would want to get 
> tenative agreement on |this|-binding. Your thoughts welcome.
> 
> /be
> 
> 
>> 
>> 
>> On Thu, Nov 10, 2011 at 7:19 AM, Andreas Rossberg <[email protected]> 
>> wrote:
>> [...]
>> No, that's how it works right now. The alternative is to lexically
>> close all methods over self at construction time:
>> 
>>  function Point(x, y) {
>>    var self = this
>>    self.x = x
>>    self.y = y
>>    self.move = function(dx, dy) { self.x += dx; self.dy += dy }
>>  }
>> 
>>  function ColorPoint(x, y, color) {
>>    var self = this
>>    Point.call(self, x, y)
>>    self.color = color
>>    self.recolor = function(c) { self.color = c }
>>  }
>> 
>> As said, this doesn't play well with prototype inheritance. You have
>> to put all methods that refer to self on the object itself. But "inner
>> constructors" are straighforward and safe.
>> -- 
>>     Cheers,
>>     --MarkM
> 
> _______________________________________________
> 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