Ори Дрори показал, что juxt
будет делать то, что вы хотите.
Что касается того, почему call
не работает ... честно говоря, это, пожалуй, самая плохо продуманная функция во всей Ramda. (Я один из основателей Ramda, и я думаю, что написал это, поэтому я не оскорбляю никого, кроме себя.)
В этом очень и очень мало нужды. Зачем писать call(fn, 1, 2)
, если можно было просто fn(1, 2)
. Каррирование не работает должным образом, так как это переменный c, что само по себе является проблемой. Даже пример довольно неясен, в основном потому, что сложно найти какой-либо значимый пример.
Я бы просто пропустил его использование лично.
Но я не Мне не очень нравится использование функции стрелки (чисто по причинам стилистического c), поэтому я хотел переписать ее как
Из комментариев я предполагаю, что вы не означают стрелочные функции, а не объявления функций или выражения функций, а то, что вы предпочли бы писать это без точек. Предложение: используйте стиль без точек, который делает ваш код более читаемым, но пропустите его, если это не так; не делайте из него фети sh.
Здесь juxt([add(2), add(3), add(4)])
кажется нормальным, если juxt
(сокращение от juxtapose
) имеет для вас смысл. Но достаточно часто попытки бессмысленных действий приносят больше вреда, чем пользы.
Я тоже пробовал,
// this also works and produces [4, 5, 6]
map(flip(call)(input), fns)
Но это тоже не устраивает меня из-за styleisti c причин. Я чувствую, что приковываю что-то к flip
,
Я склонен согласиться. flip
- не лучшее решение практически любой проблемы. Но обычно заполнитель мне нравится еще меньше. Меня просто не устраивает!
и мне также не нравятся последовательные вызовы функций (...)(...)
.
Здесь я не согласен. Я переключил свой собственный код на почти универсальный, полностью карриновый стиль. Если это связано с несколькими последовательными вызовами функций и ужасными круглыми скобками, пусть будет так. Мне просто легче работать и рассуждать об этом.