Вы бы использовали unapply
для преобразования функции, которая обычно принимает свои аргументы в виде массива, в функцию, которая может принимать любое количество позиционных аргументов:
sum([1, 2, 3]); //=> 6
unapply(sum)(1, 2, 3) //=> 6
Это позволяет вам, помимо прочего, отображать любое количество позиционных аргументов:
unapply(map(inc))(1, 2) //=> [2, 3]
unapply(map(inc))(1, 2, 3) //=> [2, 3, 4]
unapply(map(inc))(1, 2, 3, 4) //=> [2, 3, 4, 5]
identity
всегда будет возвращать свой первый аргумент. Таким образом, unapply(identity)(1,2)
совпадает с identity([1,2])
.
Если вашей конечной целью было создание функции, которая возвращает список ее аргументов, я не думаю, что вам нужно было pipe
в первую очередь. unapply(identity)
уже делал это.
Однако, если вам нужно убедиться, что ваш канал получает параметры в виде списка, вам просто нужно обернуть pipe
с unapply
:
const sumplusplus = unapply(pipe(sum, inc, inc));
sumplusplus(1, 2, 3); //=> 8