Proposal: expression mode (=)

Isiah Meadows isiahmeadows at gmail.com
Tue Nov 1 15:46:21 UTC 2016


Beat you to it by about a year ;-)

https://esdiscuss.org/topic/generalize-do-expressions-to-statements-in-general

And to be quite honest, I did find it got some interest from TC39, but it
was one of them IIRC that pointed out the ambiguity with `do { ... } while
(...)`, in which the fix would require no line terminator between the `}`
and `while`, but it wasn't particularly elegant. Keep in mind they are
interested (V8 implements the original proposal behind a flag FWIW), but
it's the parsing difficulty that's the blocker. I'm currently writing up an
alternative strawman right now that would probably end up a little more
intuitive. (Loops will trip up way too many people with the current
semantics, for example.)

On Tue, Nov 1, 2016, 09:21 JongChan Choi <jong at chan.moe> wrote:

> there isn't much difference from the `do expression`, actually, it might
be worse since it looks confusing. if it can not be omitted, I'd rather
stay with `do`.

I thought omitting additional brackets(`var foo = = if (cond) { bar } else
{ baz }`) was most sweet spot in this proposal than do expressions.
what do you think about `var foo = do if (cond) { bar } else { baz };`?

> 2016. 11. 1., 오후 4:10, Yongxu Ren <renyongxu at gmail.com> 작성:
>
> Isiah, In your case, if we do
> ```
> var x = = { a }
> ```
> there isn't much difference from the `do expression`, actually, it might
be worse since it looks confusing. if it can not be omitted, I'd rather
stay with `do`.
>
> The intent for this proposal is to allow writing better functional code
in javascript. IMO, the `do expression` is a good start, but I think using
`=` (and other operators) is a more elegant since it can be omitted.
>
> Actually, I think I have a better idea to put it together:
>
> *1. besides defining a function, if the block can be legally be replaced
by an expression, while otherwise it would cause parsing error, convert it
to expression block*
>
> *2. if the case is ambiguous or it is been used in function declaration,
adding `=` (actually, using `do` here isn't a bad idea either, but can be
quite ugly for defining function) will enforce block to be parsed as
expression*
>
> The goal is to make javascript more functional friendly.
>
>
> _______________________________________________
> 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/20161101/7be1b048/attachment.html>


More information about the es-discuss mailing list