On Mar 24, 2012, at 10:54 PM, Brendan Eich wrote:

> It's the right trade-off, and not just to get appropriately minimal classes 
> into ES6 -- the computed method case is often part of a generative framework 
> anyway, so won't obviously fit  into any general, declarative syntax.

Since we've gone with the decision not to hoist the initialization of class 
declarations, I think it makes it easier to conceive of allowing computation in 
the initialization of a class. Nadav's request is reasonable. Again, I'm fine 
with deferring it, but it's also fine to discuss it, if only for thinking a 
step or two down the road.

> At least, this is my gut reaction -- but it would be helpful to see a 
> concrete example in the wild (not contrived) and look deeper.

One simple example that comes to mind: reusing a hand-picked set of generic 
methods from e.g. Array.prototype or String.prototype:

    class Vector {
        /* various methods... */

        forEach = Array.prototype.forEach; // just an example, don't bikeshed me

        /* more methods ... */
    }

Then again, this example is also in the space of what traits would address, 
which I think are worth revisiting post-ES6. You could imagine a trait 
definition like:

    trait Sequence {
        forEach: Array.prototype.forEach,
        /* etc... */
    }

    class Vector with Sequence {
        /* various methods... */
    }

I could imagine keeping the declarative syntax of classes pretty spare by 
beefing up the expressiveness of traits. But this requires a lot more design 
work. Again, this is all outside the scope of ES6. Maximal minimalism FTW!

Dave

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

Reply via email to