我正在尝试编写一个宏来以编程方式要求一些命名空间,以便传入参数的结果为(require 'value-of-argument)
. 如果我说 (defmacro r [x] `(require ~x)) 那么我得到(require value-of-x)
了预期的结果,但我不知道如何在那里获得报价。
编辑:这是我的问题的一个更简单的例子:
(defmacro q [x] `(str ~x))
=> (map (fn [e] (q e)) (map symbol ["x" "y" "z"]))
=> ("x" "y" "z")
然而,
(defmacro q [x] `(str '~x))
=> (map (fn [e] (q e)) (map symbol ["x" "y" "z"]))
=> ("e" "e" "e")