Escrevendo uma função javascript ao curry que pode ser chamada um número arbitrário de vezes que retorna um valor na última chamada de função

Atualmente, estou trabalhando em um problema de programação no meu tempo pessoal que solicita que eu crie uma função javascript que possa ser chamada dessa maneira.

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

O que estou tendo problemas para descobrir é como fazer com que ele retorne um valor na última chamada.

Por exemplo, paraadd(1)(2) para trabalhar, entãoadd(1) deve retornar uma função, mas de acordo com as instruçõesadd(1) quando chamado por si só retornará1.

Estou assumindo que uma maneira de superar isso é descobrir quantas vezes sucessivas oadd função está sendo chamada, mas não consigo pensar em uma maneira de conseguir isso. Alguém tem alguma dica que possa me apontar na direção certa?

Eu li esses dois artigos (1, 2) na função currying e eu os entendo, mas não tenho certeza de como currying ao lidar com um número variável de argumentos.

questionAnswers(2)

yourAnswerToTheQuestion