Макрос, transform!
, как определено ниже, похоже, работает для => (transform! ["foo" 1 2 3])
. Цель состоит в том, чтобы взять список, причем первый элемент представляет собой строку, представляющую функцию в пространстве имен. Затем оборачиваем все в swap!
.
Проблема в том, что transform!
не работает для => (transform! coll)
, где (def coll ["foo" 1 2 3])
. Я получаю это тайное исключение:
#<UnsupportedOperationException java.lang.UnsupportedOperationException: nth not supported on this type: Symbol>
Функция:
(defmacro transform!
" Takes string input and update data with corresponding command function.
"
[[f & args]] ;; note double brackets
`(swap! *image* ~(ns-resolve *ns* (symbol f)) ~@args))
Мне кажется странным, что это работает для одного случая, а не для другого.