let-in if do-expr is problematic? (was: Re: proposal: let in if parentheses)
Herbert Vojčík
herby at mailbox.sk
Tue Aug 21 19:20:17 UTC 2018
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.
Isiah Meadows wrote on 21. 8. 2018 20:17:
> It's possible, but the ability to optionally destructure is what would
> make this feature worth it - I feel this should wait for pattern
> matching to be added first, though.
>
> On Tue, Aug 21, 2018 at 11:10 Jordan Harband <ljharb at gmail.com
> <mailto:ljharb at gmail.com>> wrote:
>
> ```
> {
> let a = b();
> if (a) {
> c(a);
> }
> }
> ```
>
> On Tue, Aug 21, 2018 at 10:54 AM, Ali Rahbari <rahbari at gmail.com
> <mailto:rahbari at gmail.com>> wrote:
>
> while it's possible to use let keyword in for loop parentheses,
> it's not possible to use it in if parentheses.
>
> There are two use cases for this:
>
> *1- if (let a = b()) a.c();*
> this can be done using optional chaining which is proposed:
> b()?.c();
>
> *2- if (let a = b()) c(a);*
> this or more sophisticated patterns can't be done in any way
> other than this:
> let a = b();
> if (a) c(a);
>
> the problem here beside more line of codes, is *a *is defined
> outside of if scope.
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org <mailto:es-discuss at mozilla.org>
> https://mail.mozilla.org/listinfo/es-discuss
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org <mailto: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
>
More information about the es-discuss
mailing list