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
[email protected]
www.isiahmeadows.com
On Mon, Oct 22, 2018 at 3:08 AM bishwendu kundu <[email protected]> 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 <[email protected]> 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
>> [email protected]
>>
>>
>>
>> On 17 Oct 2018, at 12:23 PM, bishwendu kundu <[email protected]> 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
>> [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