Curry en javascript para la función con n parámetros

Si f :: (a, b) -> c, podemos definir el curry (f) de la siguiente manera:

curry (f) :: ((a, b) -> c) -> a -> b -> c

const curry = f => a => b => f(a, b);
const sum = curry((num1, num2) => num1 + num2);
console.log(sum(2)(3)); //5

¿Cómo implementamos la función de curry genérico que toma una función con n parámetros?

Respuestas a la pregunta(5)

Su respuesta a la pregunta