On Mon, Aug 18, 2008 at 4:46 PM, Brendan Eich <[EMAIL PROTECTED]> wrote:
> On Aug 18, 2008, at 1:44 PM, [EMAIL PROTECTED] wrote:
> .... whether modules should be like ES1-3's weak notion of program units
> or should be something new: purely lexical scope containers.

I was making a weak reference ;) to the ES3 <Program> but picking and
choosing. Plus my head is deep in the Caja world. Apologies for the
lack of clarity.

My proposal is the latter per your question: A module is an isolated
lexical scope container, and contains no implicit references to any
shared global object.

> This reasoning seems backwards. If modules are added in a first-class way to
> the JS, they present an opportunity to avoid the global objec utterly, and
> enforce true lexical scope. Since the Program nonterminal from ES1-3 is
> evaluated using a shared global object in browser embeddings, it cannot be
> restated using this lexical-scope-only idea of a module.

Right, so yes, I agree entirely.

> Inside a module, introduced by some kind of explicit syntax, only lexical
> scope is allowed. No global properties are available. Typos in unqualified
> identifier expressions can be caught at compile time. Cats and dogs live
> together in peace ;-).

Yup, live they do. :) That said, we in Caja land have worried about
whether *some* default global properties should be made available --
objects that are essentially powerless like Function and Number, and
which would be a pain in the neck to have to explicitly pass down to
subordinate modules every time with every "importModule" statement.
What this set of defaults would or should be is up in the air, mainly
because Date would logically be one of them yet it is notably *not*
powerless.

Thanks!!

Ihab

-- 
Ihab A.B. Awad, Palo Alto, CA
_______________________________________________
Es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to