Few nits inline:

-----

Isiah Meadows
m...@isiahmeadows.com

Looking for web consulting? Or a new website?
Send me an email and we can get started.
www.isiahmeadows.com


On Fri, Jul 14, 2017 at 11:11 PM, Bob Myers <r...@gol.com> wrote:
> The proposal to write `arr.reduce((+))`, with `(+)` as an alternative to
> `(a, b) => a + b` is admirably concise, but syntactically challenging.

Actually, it's not as *syntactically* challenging as you might think;
it can be discerned just by recognizing the token sequence `(` @ `)`,
where @ is the operator's token in question.

>
> The idea is a new form of function we'll call a "pound function", written as
> `#{ }`, Within the body, parameters are available as `#0`, `#1`, etc.

Potential complication: the parameter names visually conflict with the
private member proposal.

https://github.com/tc39/proposal-class-fields

>
> ```js
> arr.reduce(#{# + #})
> arr.sort(#{#.order - #.order})
> ```

This quite honestly looks like line noise. Also, it doesn't look clear
at a glance whether it should be equivalent to `(a, b) => a + b` or `a
=> a + a` (using the first example).

>
> If need be, we can define `...##` inside pound functions as referring to the
> argument list, so
>
> ```js
> const sumParams = #{##.reduce(#{# + #})};
> ```

That does not look very elegant nor readable.

>
> Ugh. Anyway, I will leave it others to opine on whether this cryptic syntax
> is worth the trouble, issues related to nested pound functions, etc. etc.
>

You might want to investigate Clojure's [1] and Swift's [2] similar
existing syntaxes for this.

[1]: https://coderwall.com/p/panlza/function-syntax-in-clojure
[2]: 
https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html

>
> Bob
>
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to