let-in if do-expr is problematic? (was: Re: proposal: let in if parentheses)

Jordan Harband ljharb at gmail.com
Thu Aug 23 06:22:36 UTC 2018


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 <kaizhu256 at gmail.com> 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" <claude.pache at gmail.com> wrote:
>
>>
>>
>> > Le 21 août 2018 à 21:20, Herbert Vojčík <herby at mailbox.sk> 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
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20180822/b744a661/attachment-0001.html>


More information about the es-discuss mailing list