2019-03-11 Daily Challenge

What I've done today is A Chain adding function in JavaScript.

Currying is awesome!

CodeWars

Problem

A Chain adding function

We want to create a function that will add numbers together when called in succession.

add(1)(2);
// returns 3

We also want to be able to continue to add numbers to our chain.

add(1)(2)(3); // 6
add(1)(2)(3)(4); // 10
add(1)(2)(3)(4)(5); // 15

and so on.

A single call should return the number passed in.

add(1); // 1

We should be able to store the returned values and reuse them.

var addTwo = add(2);
addTwo; // 2
addTwo + 5; // 7
addTwo(3); // 5
addTwo(3)(5); // 10

We can assume any number being passed in will be valid whole number.

Solution

function add(n){
  const f = (x) => add(x+n);
  f.valueOf = () => n;
  return f;
}