Implement curry function

You are required to implement a curry function that takes a function and returns a curried version of it.

Currying is a technique in functional programming where a function with multiple arguments is broken down into a sequence of functions each taking a single argument.

Currying is a powerful tool that can improve code reusability, composability, and maintainability.

function sum(a, b, c) {
    return a + b + c;
}

let curriedSum = curry(sum);

console.log(curriedSum(1)(2)(3)); // 6
console.log(curriedSum(1, 2)(3)); // 6
console.log(curriedSum(1, 2, 3)); // 6

Examples

Convert function into a simple curried function

This is a normal function

const sum = (a, b, c) => {
  return a + b + c;
}

console.log(sum(1, 2, 3)); // Output: 6

Let's transform this function into a curried version:

const sum = (a) => {
  return (b) => {
    return (c) => {
      return a + b + c;
    };
  }
}

console.log(sum(1)(2)(3)); // Output: 6