As mentioned previously, the pattern matching proposal does a lot to help here:
```js function sum_list(input, result = 0) { case (input) { when [head, ...tail] -> return sum_list(input, result + head), when _ -> return result, }; } ``` ----- Isiah Meadows cont...@isiahmeadows.com www.isiahmeadows.com On Mon, Oct 22, 2018 at 3:08 AM bishwendu kundu <bishwenduk...@gmail.com> wrote: > > Hi Kai Zhu, > > I agree with you the new proposition should be of value to a web developer in > daily work. If we observe the pattern it more closely resembles a more > declarative form of solution implementation which is easy to code and > understand. For example lets consider below piece of code: > ```js > function sum_list(input, result){ > if(!input.length) > return result; > [head, ...input] = input; > return sum_list(input, result + head); > } > ``` > Now the same code in the new proposal form > > ```js > function sum_list([head, ...tail], result){ > result = result + head; > return sum_list(tail, result); > } > > function sum_list([], result){ > return result; > } > ``` > > This declarative model of coding also forces an immutable form of state > management allowing for removing a family of bugs. > > Thanks & Regards, > Bishwendu. > > On Wed, Oct 17, 2018 at 12:57 PM kai zhu <kaizhu...@gmail.com> wrote: >> >> hi Bishwendu, javascript is first-and-foremost a tool designed for >> web-product-development, a growing field that has eclipsed low-level >> general-purpose programming (where jobs are harder and harder to find) in >> the IT industry. >> >> you need to give compelling reasons (for such significant language-change) >> why i, a web-developer would benefit from from having overloaded-functions >> in my (mostly expendable-code) web-projects, as opposed to creating >> confusion and maintennance-headaches, when i typically have to rewrite code >> multiple-times during the web-integration process. >> >> kai zhu >> kaizhu...@gmail.com >> >> >> >> On 17 Oct 2018, at 12:23 PM, bishwendu kundu <bishwenduk...@gmail.com> wrote: >> >> Hello All, >> >> I have been a great fan of the evolution of JavaScript in the recent past. >> The language is steadily closing the gap to ideal functional paradigm. One >> of the things that I have liked the most about languages like >> Erlang/Elixir/Haskell is their ability to define functions with same name >> and different airty. The decision of invoking the correct function-argument >> pattern is dependent on the invocation of the function. Implicit pattern >> matching in aforementioned languages helps avoid costly cognitive loads >> introduced by explicit if/else based pattern of logic flow branching. >> >> The greatest power of the pattern matching which amazed me was, dropping the >> whole of looping construct, altogether. Elixir/Erlang have no LOOPS. Stack >> based recursive calls combined with JavaScript's closures suddenly strikes >> me as a very powerful programming model that not only increases readability >> of code but also promotes immutability of the data structures in use. The >> loops would continue to exist but more modern codes can be written >> leveraging the recursive model of JavaScript. >> >> With de-structuring of arrays & objects already in place in JavaScript, >> pattern-matching of functions can fit right in perfectly, thereby taking >> JavaScript another step closer to ideal functional programming model. >> >> Looking forward to your response. >> >> Thanks & Regards, >> Bishwendu. >> _______________________________________________ >> 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 _______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss