Смысл макросов в стиле Lisp заключается в том, что они работают с кодом , а не с текстом (или, более конкретно, с абстрактным синтаксическим деревом вместо последовательность токенов ), и это делает их чрезвычайно полезными, чем препроцессор C.
То, что вы на самом деле намереваетесь сказать, это сказать, что функция должна вызываться с тремя аргументами, которые происходят сбыть значениями переменных с одинаковыми именами на каждом сайте вызова.Это довольно много предположений.Давайте посмотрим, как это будет выглядеть на практике:
(def-magic-splat-macro params ; whatever, doesn't exist
a b c)
(defn foo [a]
(let [b (frob a)
c (blah)]
(func params))) ; What the hell
Я не понимаю, как это может быть полезно, кроме как для запутывания.
Если вы хотите определить стандартные параметры:
(def standard-params [1 "quux" :never]) ; values!
(defn foo [bar]
…
(apply func standard-params))