Macros lisp代码宏输出中的引号

Macros lisp代码宏输出中的引号,macros,lisp,common-lisp,Macros,Lisp,Common Lisp,我怎样才能得到这样的东西: (my-macro name) => (foo "foo-transformed-arg-name") 我只得到了 (foo \#" foo-transformed-arg-name \#") 如何避免宏输出中的#?这可能就是您想要做的: (defmacro静态字符串(func和rest字符) `(,func,(强制字符的字符串))) 如果您需要定义一些字符串常量而不是在运行时创建它们,那么这可能是有意义的 这是我认为你能够达到目前结果的唯一方法: (定义

我怎样才能得到这样的东西:

(my-macro name) => (foo "foo-transformed-arg-name")
我只得到了

(foo \#" foo-transformed-arg-name \#")

如何避免宏输出中的#?

这可能就是您想要做的:

(defmacro静态字符串(func和rest字符)
`(,func,(强制字符的字符串)))
如果您需要定义一些字符串常量而不是在运行时创建它们,那么这可能是有意义的

这是我认为你能够达到目前结果的唯一方法:

(定义宏引号符号引号(func符号)
(列表函数“符号”)

Stackoverflow高亮显示有误导性。结果是调用一个带有三个参数的函数:引号字符、符号
foo转换的arg name
和引号字符。

解决方法非常简单。我真正的问题是如何将宏的mi参数符号转换为字符串

(my-macro foo) => (other-func "foo")
即将sybol foo转换为“foo”。 为此,我使用了符号名函数

(defmacro foo (sym)
  (symbol-name sym))


我不明白您为什么需要这样的宏,但您最清楚。

您做了什么?代码?
(defmacro foo (sym)
  (string-downcase (symbol-name sym)))