我想将调度宏包装在另一个中以保持清洁。然而,Clojure似乎对待它的方式不同......或许我误解了什么?让我们看一下简单地为#
创建别名的情况。
这有效:
(defmacro mkDef [x y] `~(list 'def x y))
但这不是:
(defmacro mkDispatch [x] `~(list '# x))
谢谢!
P.S。有足够代表的人:请创建一个syntax-macros标签;我希望能够更好地搜索类似的问题。
答案 0 :(得分:8)
#dispatch宏是一个读取器宏,读取器宏不能使用常规宏实现;它们由(读)代替(eval)来解释。