Escribir una función de JavaScript al curry que se puede llamar un número arbitrario de veces que devuelve un valor en la última llamada a la función

Actualmente estoy trabajando en un problema de programación en mi tiempo personal que me pide que haga una función de JavaScript que se pueda invocar de esta manera.

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

Lo que tengo problemas para descubrir es cómo hacer que devuelva un valor en la última llamada.

Por ejemplo, paraadd(1)(2) para trabajar, entoncesadd(1) tiene que devolver una función, pero de acuerdo con las instruccionesadd(1) cuando se llama por sí solo volverá1.

Supongo que una forma de superar esto es averiguar cuántas veces seguidasadd Se llama a la función, pero no se me ocurre una forma de lograrlo. ¿Alguien tiene alguna pista que pueda señalarme en la dirección correcta?

He leído estos dos artículos (1, 2) sobre la función curry y los entiendo, pero no estoy seguro de cómo hacer curry cuando trato con un número variable de argumentos.

Respuestas a la pregunta(2)

Su respuesta a la pregunta