Following Luke’s argument: Everything is modeled after an assignment (roughly:
lhs is the new identifier, rhs is the definition) except for
import "foo.js" as Foo;
Other possibilities (not sure assigning a string makes sense):
module Foo is "foo.js";
module Foo from "foo.js";
module Foo via "foo.js";
On Mar 21, 2012, at 23:44 , Luke Hoban wrote:
> Dave -
>
> Great to see the updates. A couple of questions:
>
>>> import "foo.js" as Foo;
>>> import foo from "foo.js";
>
> These two forms look rather confusingly similar given how different they are,
> and the inversion of order of where the filename lives doesn't seem to line
> up with the semantic difference between the two forms. It feels like this is
> an attempt towards fluent syntax design, but to me at least, this just
> doesn't feel easy to learn/remember/read.
>
>>> module m = foo.bar.baz;
>
> Why isn't aliasing a remote module the same as aliasing a local module? That
> is, why can't I say 'module m = "foo.js"' instead of 'import "foo.js" as m'?
> It seems the whole syntactic surface area of modules would be simpler if
> remote module identifiers were used in the same way as local module bindings
> in the various syntactic forms. Since this seems to be the way things are
> done on the RHS of 'import...from...', why be different in 'module...=...'? I
> thought this is how things were originally - why change?
>
> More broadly - is it possible to reduce further to just 'module...=...' and
> 'import...from...'? Which mean "alias a module" and "import names from
> inside a module" respectively.
>
> Luke
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]]
> On Behalf Of David Herman
> Sent: Wednesday, March 21, 2012 3:29 PM
> To: es-discuss discussion
> Subject: simpler, sweeter syntax for modules
>
> H'lo,
>
> Thanks to some a-maz-ing [1] work by Andreas Rossberg (I'll spare the gory
> algorithmic details), the linking process no longer needs the syntactic
> distinction that static module bindings are only created via the `module`
> (contextual) keyword. This frees us up to simplify the syntax, making much
> less use of the `module` keyword and much more use of `import`.
>
> I've drafted a new syntax that is both much simpler and, I think, far more
> intuitive than the previous version.
>
> Examples:
>
> * importing an external module:
>
> import "foo.js" as Foo;
>
> * importing a module's export:
>
> import foo from "foo.js";
> import bar from Bar;
> import baz from bar.mumble.quux;
>
> * importing all exports:
>
> import * from Bar;
>
> * importing with renaming:
>
> import { draw: drawGun } from "cowboy.js",
> { draw: drawWidget } from "widgets.js";
>
> * defining a module (same as ever):
>
> module m { ... }
>
> * aliasing a module for convenience:
>
> module m = foo.bar.baz;
>
> This new syntax is up on the wiki:
>
> http://wiki.ecmascript.org/doku.php?id=harmony:modules
>
> A couple conventions to note about this:
>
> * the "as" contextual keyword signifies renaming the module *itself*
>
> * the "from" contextual keyword always signifies extracting an export /from/
> the module
>
> * while "import" no longer strictly means extracting an export, it matches
> common spoken usage better -- "import" is used both to mean extracting
> exports /and/ loading external modules
>
> * despite this overloading, a single "import" declaration is *only* ever
> importing modules or importing bindings, never both
>
> Comments welcome [2],
> Dave
>
> [1] Really. You have no idea.
> [2] Translation: Unleash the hounds of bikeshedding! ;-P
>
> _______________________________________________
> 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
>
--
Dr. Axel Rauschmayer
[email protected]
home: rauschma.de
twitter: twitter.com/rauschma
blog: 2ality.com
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss