Insurrection (was: ES4 draft: Object)

Maciej Stachowiak mjs at
Mon Mar 10 23:21:58 PDT 2008

On Mar 10, 2008, at 9:54 PM, Mark Miller wrote:

> ES3 has several abstraction mechanisms:
> * lambda abstraction, which it gets approximately as right as Scheme!
> * objects as a generalization of records, which has some pros and cons
> * prototype-based sharing of common behavior, which is used almost
> exclusively by JavaScript programmers to express only class-like
> patterns.
> Altogether, ES3 has many virtues and many problems. One of its great
> virtues is its almost perfect support for lexical nesting. Virtually
> any thisless construct that could appear at top level can also appear
> within a nested lexical context with the same meaning. ES3 also avoids
> the CommonLisp trap of multiple namespaces, instead siding with
> Scheme's single namespace approach.
> Even ignoring ES4's type system, ES4 adds all the following
> abstraction mechanisms to those in ES3:
> * classes
> * packages
> * units
> * namespaces

You forgot interfaces (and the type system also adds record types,  
(sort-of)-tuples, typed arrays and parametric types). That does seem  
like a lot.

  - Maciej

More information about the Es4-discuss mailing list