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)))