Follow-up: I've factored out these two alternative approaches, both of which I 
think are defensible.

Grammars:

    http://wiki.ecmascript.org/doku.php?id=harmony:modules#syntax

Simple examples:

    http://wiki.ecmascript.org/doku.php?id=harmony:modules#external_module_load

Dave

On Mar 21, 2012, at 5:25 PM, David Herman wrote:

> On Mar 21, 2012, at 3:44 PM, Luke Hoban wrote:
> 
>> 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.
> 
> Yeah, I'm not trying to do fluent syntax per se; the goal is not 
> COBOL/AppleScript. But it should still read well, in such a way as to avoid 
> the off-by-one confusion inherent in being able to import a module or import 
> its exports.
> 
> Andreas also didn't like the inversion of order. I came to this because 
> earlier versions of the syntax were inconsistent about whether `from` meant 
> the-module-itself or an-export-of-the-module, which made it even more 
> confusing. This new syntax was inspired by Python, but with `import` as the 
> leading keyword, rather than `from`. Which is what leads to the inversion of 
> order.
> 
> I've gone through a few alternatives, but they all read more awkwardly to me:
> 
>    import Foo at "foo.js"; // ...maybe? *shrug*
>    import Foo is "foo.js"; // reads awkwardly
>    module Foo = "foo.js";  // looks like Foo is a string
>    module Foo is "foo.js"; // just looks like an awkward workaround
> 
> 
>>>> 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?
> 
> Perhaps. I saw community members upset that we would use `module` as the 
> keyword for importing external modules instead of `import`, e.g.:
> 
>    https://twitter.com/#!/substack/status/170161863814946816
> 
> Moreover, Brendan felt that module...=..."..." looks too confusingly like 
> you're assigning a string value. Others I spoke to, particularly those 
> accustomed to Python, felt that `import` read better as the way to load 
> external modules.
> 
>> 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.
> 
> Certainly possible, yes. I think that's Andreas's preferred syntax as well. I 
> think that's a viable alternative. Just based on my anecdotal experience 
> talking to people so far, I suspect we'd find people's preferences split. The 
> good news is that we are no longer constrained by technical details of the 
> linking semantics as to which way we want to go. The bad news is that we'll 
> have to pick a syntax, and some people will undoubtedly hate it. :-P
> 
> Seriously, I don't feel religious about either of the two syntaxen. I think I 
> will put up both alternatives on the wiki for a better head-to-head 
> comparison.
> 
> Thanks for the feedback,
> Dave
> 
> _______________________________________________
> 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