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

Reply via email to