有没有办法检查是否引用了符号?

时间:2017-08-02 03:16:46

标签: elisp

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

提前致谢。

1 个答案:

答案 0 :(得分:2)

宏参数未评估,所以是的,您可以检查参数是否被引用,如果没有,则引用它。像这样的东西?

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