Actual characters are minor issue. There are many unused combinations of "special" characters. Eg. ?> ?: :? ?() @? ?* ?# ?@ @? -? =? ?= (?) etc.
On Thu, Sep 21, 2017 at 11:19 AM, Michael Rosefield <[email protected]> wrote: > There was a suggestion that came up in my original reddit post that I > think merits discussion here. > > I know one of the main arguments against this new operator is to prevent > needless and confusing language explosion, but u/notNullOrVoid pointed out > that this bears similarity to another operator already under TC39 > consideration, the pipeline-operator (https://github.com/tc39/ > proposal-pipeline-operator). > > My suggestion could then be implemented as follows: > > const foo = getSomething() |> x => x ? dosomething(x) : doSomethingElse(); > > And this ternary could be simply a pipeline variant: > > const foo = getSomething() ?> x => dosomething(x) : doSomethingElse(); > > That reads much clearer and also takes care of the syntactically invalid > ?! formularion. > > On Wed, 20 Sep 2017 at 14:22 Naveen Chawla <[email protected]> wrote: > >> As your example shows, for loops can be reduced to array reduction >> function calls. `if` `else`s can be represented by ternaries. >> >> `while` loops aren't so straightforward but can be factored into single >> function calls. They are less common anyway. >> >> I find single expressions listed as `(a, b, c)` more readable than code >> blocks who eventually evaluate to a single value each. >> >> So, even if `do` expressions were introduced into ES, I would avoid using >> them as much as I could, unless it were really smarter and more readable to >> use them than any of the alternatives >> >> On Wed, 20 Sep 2017 at 16:11 T.J. Crowder <tj.crowder@farsightsoftware. >> com> wrote: >> >>> On Wed, Sep 20, 2017 at 11:28 AM, Naveen Chawla <[email protected]> >>> wrote: >>> > >>> > The comma operator seems to make the `do` concept redundant, at >>> > least for me. >>> >>> No, not at all. Again: With the comma operator, you can't use >>> *statements*, only expressions. With the `do` expression, you can use >>> actual statements: >>> >>> ```js >>> const x = do { >>> for (const x of getTheThings()) { >>> if (x.id == something) { >>> x.foo; >>> } >>> } >>> }; >>> ``` >>> >>> ...which is basically: >>> >>> ```js >>> const x = getTheThings().find(x => x.id == something).foo; >>> ``` >>> >>> ...except it doesn't throw if `find` returns `undefined`, and isn't a >>> series of function calls. >>> >>> `do` expressions are basically to address overly-complex conditional >>> expressions and IIFEs. >>> More: https://gist.github.com/dherman/1c97dfb25179fa34a41b5fff040f9879 >>> >>> -- T.J. Crowder >>> >>> _______________________________________________ >> es-discuss mailing list >> [email protected] >> https://mail.mozilla.org/listinfo/es-discuss >> > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss > >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

