我试图在Emacs Lisp上创建一个宏,我正在努力查看用户是否可以传递引用或未引用的符号。
其实我需要像quote-only-if-is-not-quoted
宏这样的东西。有什么相似的吗?任何Lisp方言我都没有发现任何相关信息。宏示例:
(quote-only-if-is-not-quoted 'q) => (quote q)
(quote-only-if-is-not-quoted q) => (quote q)
提前致谢。
答案 0 :(得分:2)
宏参数未评估,所以是的,您可以检查参数是否被引用,如果没有,则引用它。像这样的东西?
(defmacro quote-only-if-is-not-quoted (arg)
(if (and (consp arg)
(eq (car arg) 'quote))
arg
`(quote ,arg)))