Как применить последовательность функций к последовательности переменных в Clojure?

0

Вопрос

У меня есть функция, которая принимает последовательность функций и последовательность аргументов. Это должно возвращать вектор с результатами каждой функции, примененной к последовательности аргументов.

((solution + max min) 2 3 5 1 6 4) ;;--> [21 6 1]

Я пытаюсь решить эту проблему с помощью reduce, но я не знаю, как применить все функции, это работает только для первой функции:

(defn solution
  [& args]
 (fn [& args2]
 (reduce (first args) [] args2)))
clojure higher-order-functions
2021-11-13 20:27:42
1

Лучший ответ

4

Воспользуйсяjuxt:

((juxt + max min) 2 3 5 1 6 4)
=> [21 6 1]

Или определите функцию solution:

(defn solution
  [& args]
  (fn [& args2]
    (apply (apply juxt args) args2)))

((solution + max min) 2 3 5 1 6 4)
=> [21 6 1]
2021-11-13 20:34:59

Что ж, (def solution juxt) было бы достаточно, чтобы определить solution.
jaihindhreddy

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................