我发现很难推理宏展开,并想知道测试它们的最佳方法。
因此,如果我有一个宏,我可以通过 macroexpand-1
进行一级宏展开。
(defmacro incf-twice (n)
`(progn
(incf ,n)
(incf ,n)))
例如
(macroexpand-1 '(incf-twice n))
等价于
(PROGN (INCF N) (INCF N))
将此转化为宏的测试似乎很简单。
(equalp (macroexpand-1 '(incf-twice n))
'(progn (incf n) (incf n)))
有没有关于宏测试组织的公认惯例?此外,是否存在用于总结s表达式差异的库?