Каждый раз так часто я нахожу, что хочу применить набор функций к нескольким наборам параметров. Это легко сделать с картой и очень простой функцией.
(map
(fn invoke [f & args] (apply f args))
[- + *]
[1 2 3]
[1 2 3]
[1 2 3])
(-1 6 27)
Поиск в Интернете вызывает довольно много библиотек, которые определяют аналогичную функцию, часто называемую funcall или invoke. Из-за Clojure склонности к вариационным функциям я не могу не думать, что должна быть стандартная версия этой функции.
Есть ли, или есть другой идиоматический способ решения таких ситуаций?
Edit:
Другая форма может быть
(map
(comp eval list)
[- + *]
[1 2 3]
[1 2 3]
[1 2 3])
(-1 6 27)
Что меня пугает из-за eval.