是否可以将宏扩展为几个元素?

Sal*_*Egg 1 macros common-lisp

我想一个宏my-macro可以扩展到1 2 3不是(1 2 3),这样

(list (my-macro) 4 5) -> (1 2 3 4 5)
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Vat*_*ine 6

不,宏不能扩展到多个值.当你需要一个宏来扩展到多段代码时,典型的做法是将返回值包装在一个progn.

在评论中的示例中,看起来好像您使用的宏不是语法抽象,而是作为廉价和快乐的函数优化,通常的反应是"请不要这样做,这是错误的并且没有"实际上做你想做的事情.