Clojure - 派遣宏特别吗?

时间:2011-06-20 03:13:44

标签: macros clojure

我想将调度宏包装在另一个中以保持清洁。然而,Clojure似乎对待它的方式不同......或许我误解了什么?让我们看一下简单地为#创建别名的情况。

这有效:

(defmacro mkDef [x y] `~(list 'def x y))

但这不是:

(defmacro mkDispatch [x] `~(list '# x))

谢谢!

P.S。有足够代表的人:请创建一个syntax-macros标签;我希望能够更好地搜索类似的问题。

1 个答案:

答案 0 :(得分:8)

#dispatch宏是一个读取器宏,读取器宏不能使用常规宏实现;它们由(读)代替(eval)来解释。