Ramda не имеет точно такой функции. Нет ничего сложного в построении. Вот версия, похоже, со слегка измененным API и более общо:
const knit = compose(map, zipWith(call));
const pairs = [["key1", "VAL1"], ["key2", "VAL2"], ["key3", "VAL3"]];
knit([toUpper, toLower])(pairs);
//=> [["KEY1", "val1"], ["KEY2", "val2"], ["KEY3", "val3"]]
const triples = [["key1", "VAL1", 1], ["key2", "VAL2", 2], ["key3", "VAL3", 3]];
const square = n => n * n;
knit([toUpper, toLower, square])(triples);
//=> [["KEY1", "val1", 1], ["KEY2", "val2", 4], ["KEY3", "val3", 9]]
Если вы действительно хотите, чтобы передать список в первоначальный вызов, вы могли бы написать это следующим образом:
const knit = useWith(map, [zipWith(call), identity]);
И если эта версия кажется излишне загадочной, вы всегда можете использовать версию, которая не являются точки свободной, таких как:
const knit = (fns, xs) => map(zipWith(call, fns), xs);
Но ни один из них не имеет свободный список функций; они завернуты в список. Это норма для функций Рамды. Если вы действительно хотите больше один, как функции Мори, ваш может добавьте unapply
:
const knit = compose(map, unapply(zipWith(call)));
knit(toUpper, toLower)(pairs);
knit(toUpper, toLower, square)(triples);
Мое личное предпочтение было бы для самого простого:
const knit = compose(map, zipWith(call));
knit([toUpper, toLower])(pairs);
knit([toUpper, toLower, square])(triples);
Вы можете играть с некоторыми из эти варианты на Ramda REPL.
Благодарим вас за подробный ответ, именно это я и искал! ура – mattijs