agree that “stupid” was a too-strong word, but the scope of es6-modules 
honestly was a mistake when we reflect on it with 20/20 hindsight.  imagine an 
alternate-timeline where tc39 had instead gone with a 
smaller-scope/conservative/gatekeeper approach of expanding on commonjs-modules 
instead.  most web-developers would probably agree such a scenario would've 
been more conducive to web-development:

- it would’ve mitigated significantly, the tooling-hell associated with es6 
web-projects that makes them riskier than es5 web-projects.

- we wouldn’t have the issue of every es6 web-project being permanently stuck 
with context-switching between commonjs-modules and es6-modules, because its 
impossible to reinvent all relevant commonjs-modules as es6-modules

- we wouldn’t have awkward conversations when teaching beginners on why the 
language has [soon-to-be] 3 different module-loading systems: 1) 
commonjs-require, 2) static-import, and 3) dynamic-import (which is 
essentially/cross-cutting commonjs-require *except its not* because we don’t 
want to admit that [asynchronous?] static-import turns out to be too confusing 
and difficult-to-use for frontend-developers).

this is a cautionary-tale of what happens in design-by-comittee, where not 
enough committee-members clearly thought-through the big-picture impact to 
industry of what they were doing.

kai zhu
[email protected]



> On 23 Aug 2018, at 11:07 PM, Jordan Harband <[email protected]> wrote:
> 
> It's off topic to the thread, so either way it's not appropriate to bring it 
> up here.
> 
> It's not objectively a mistake, and calling it "stupid" is absolutely toxic. 
> Be nice, or don't participate. I'll refer you to 
> https://github.com/tc39/code-of-conduct 
> <https://github.com/tc39/code-of-conduct> which governs this list as well.
> 
> On Thu, Aug 23, 2018 at 2:14 AM, kai zhu <[email protected] 
> <mailto:[email protected]>> wrote:
>> Dependency resolution logic is platform-specific
> 
> 
> @jordan, platform-specific logic is not a real problem?  the behavior of 
> import-statement between babel (sync), native-browser (async), native-nodejs 
> (sync???) are all subtly different.  and yes, it's effectively a 
> with-statement.
> 
> its not toxicity.  its reminding tc39 of their mistakes, so they don’t repeat 
> something again as stupid and harmful to industry/web-development in the 
> future.
> 
> kai zhu
> [email protected] <mailto:[email protected]>
> 
> 
> 
>> On 23 Aug 2018, at 1:22 PM, Jordan Harband <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> Kai, that makes no sense whatsoever, and isn't contributing productively to 
>> this thread. Dependency resolution logic is platform-specific - in browsers, 
>> it's "URLs", which I assume you understand, and in node using babel, it's 
>> "the same as require", which I'd assume any node user would understand. 
>> There's no relationship to "with" statements and no actual difficulty 
>> "debugging" them that I'm aware of after using them for years.
>> 
>> Please stay on topic, and keep to yourself comments that are nothing more 
>> than random toxicity about the JS language.
>> 
>> On Wed, Aug 22, 2018 at 5:12 AM, kai zhu <[email protected] 
>> <mailto:[email protected]>> wrote:
>> es6 import-statements are effectively with-statements …
>> 
>> actually, they're *async* with-statements, with no callback-handling and 
>> non-obvious dependency-resolution logic, for those of us trying to debug 
>> them when things go wrong.
>> 
>> 
>> On Aug 22, 2018 15:58, "Claude Pache" <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> 
>> > Le 21 août 2018 à 21:20, Herbert Vojčík <[email protected] 
>> > <mailto:[email protected]>> a écrit :
>> > 
>> > Hi!
>> > 
>> > It would be nice to know if do expressions have some a chance, otherwise 
>> > some other syntax for let-in would be really helpful, especially now that 
>> > we have arrow functions.
>> > 
>> > I would propose to use different variant of let (maybe also const):
>> > 
>> > OP 1:
>> > 
>> >  let in a = b(), if (a) a.c();
>> > 
>> > OP 2:
>> > 
>> >  let in a = b(), if (a) c(a);
>> > 
>> > Instead of
>> >  const big = raw => {
>> >    let cooked = cook(raw);
>> >    return consumer => {
>> >      // do things with consumer and cooked
>> >    };
>> >  };
>> > 
>> >  const big = raw =>
>> >    let in cooked = cook(raw), consume => {
>> >      // do things with consumer and cooked
>> >    };
>> > 
>> > In short,
>> > 
>> >  let in binding = expr, stmt|expr
>> > 
>> > It may work for `const in` as well.
>> > 
>> > Herby
>> > 
>> > P.S.: Alternative syntax is "let a=3, b=4, ..., in foo(a,b,c,d)" but this 
>> > can only tell late if it is plain let-up-to-end-of-scope or 
>> > local-scope-let, so not sure if that may be a problem; OTOH you can chain 
>> > more of them and resembles classical let-in better.
>> 
>> Please, don’t take it too seriously: but have you thought about 
>> resuscitating the (in)famous `with` statement?
>> 
>> ```js
>> const big = raw => 
>>     do with ({cooked: cook(raw)})
>>         consumer => {
>>             // do things with consumer and cooked
>>         };;
>> ```
>> 
>> And no the two ”;”s are not a typo: I need to end both the `with` statement 
>> and the `const` declaration.
>> 
>> But more seriously... those sorts of “clever” syntaxes (`let-in` or 
>> `do-with` or whatever), apart from complicating the language, are in danger 
>> of raising as much issues than they’re resolving; the double-semicolon 
>> oddity is one of them.
>> 
>> —Claude
>> 
>> _______________________________________________
>> es-discuss mailing list
>> [email protected] <mailto:[email protected]>
>> https://mail.mozilla.org/listinfo/es-discuss 
>> <https://mail.mozilla.org/listinfo/es-discuss>
>> 
>> _______________________________________________
>> es-discuss mailing list
>> [email protected] <mailto:[email protected]>
>> https://mail.mozilla.org/listinfo/es-discuss 
>> <https://mail.mozilla.org/listinfo/es-discuss>
>> 
>> 
> 
> 

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to