Я новичок в Clojure, и я застрял в том, как «расширить» необязательные аргументы функции, чтобы их можно было отправить в другую функцию, которая использует необязательные аргументы (но хочет, чтобы эти аргументы были ключевыми словами, а не последовательностью ключевые слова).
Я разбираю xml, и если я жестко кодирую значения, как показано ниже, моя функция работает, она проходит по xml и находит значение 'title':
; zd was required like this
[clojure.data.zip.xml :as zd]
; ...
(defn get-node-value [parsed-xml & node-path]
(zd/xml-> (zip/xml-zip parsed-xml) :item :title zd/text))
(get-node-value parsed-xml)
Что я хочу сделать, так это использовать 'node-path' для передачи в любом количестве ключевых слов, но когда он написан, как показано ниже, он представляет собой последовательность ключевых слов, поэтому возникает исключение:
(defn get-node-value [parsed-xml & node-path]
(zd/xml-> (zip/xml-zip parsed-xml) node-path zd/text))
(get-node-value parsed-xml :item :title)
; ClassCastException clojure.lang.ArraySeq cannot be cast to clojure.lang.IFn clojure.data.zip/fixup-apply (zip.clj:73)
спасибо!