Я играл вокруг с Clojure, и решил сделать функцию высшего порядка, который сочетает в себе mapcat и список эмулировать это поведение:Передача списка переменных индивидуально функции Clojure
Clojure> (mapcat list '(1 2 3 4) '(5 6 7 8))
(1 5 2 6 3 7 4 8)
моя первая попытка была определяющую mapcatList следующим образом:
Clojure> (defn mapcatList[& more](mapcat list more))
#'sandbox99/mapcatList
Clojure> (mapcatList '(1 2 3 4) '(5 6 7 8))
((1 2 3 4) (5 6 7 8))
Очевидно, что функция не ведет себя, как я хотел, и я думаю, что это происходит потому, что эти два списка кладется в один список и передаются в качестве единственного аргумента, а не два. я был в состоянии исправить ситуацию с нижеследующим,
Clojure> (defn mapcatList[x y & more](mapcat list x y))
#'sandbox99/mapcatList
Clojure> (mapcatList '(1 2 3 4) '(5 6 7 8))
(1 5 2 6 3 7 4 8)
Это решение хорошо работает с двумя списками, но я хотел бы функция для работы с переменным числом аргументов.
Мой вопрос: Как передать переменное число аргументов функции, а затем разрушить их, чтобы они передавались как отдельные аргументы вместе в «mapcat list»?
(defn картаcatList [& больше] (применять картаcat список более)) – vedang