有没有办法检查一个符号是否被引用?

Is there a way to check if a symbol is quoted?

我正在尝试在 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)

提前致谢。

宏参数未计算,所以是的,您可以检查是否引用了一个参数,如果没有,则引用它。是这样的吗?

(defmacro quote-only-if-is-not-quoted (arg)
  (if (and (consp arg)
           (eq (car arg) 'quote))
      arg
    `(quote ,arg)))