Есть ли какой-нибудь (разумный) способ записать этот макрос как функцию?
(defmacro assocTop
[v & args]
`(push (pop ~v)
(assoc (peek ~v) ~@args)))
Учитывая вектор карт и некоторые ассоциации, код макроса применяет ассоциации к верхней / просматриваемой карте.
Однако, пытаясь написать его как функцию, я не могу понять, как расширить ~@args
законным способом. В обычных функциях есть способ превратить args
, который, как мне кажется, имеет форму (:a 3 :bb 44 :cd 90,...)
в :a 3 :bb 44 :cd 90,...
, т.е. без парней?