在宏中使用&body
的网络有很多例子。它只能由反引号内的,@body
访问。但是我们如何在函数中使用&body
lambda-list关键字。我尝试使用这个关键字创建了许多函数,但他们可以返回我的所有内容都是错误的
&BODY is not allowed in an ordinary lambda list: (&BODY PIKACHU)
(好吧,我的变量名是皮卡丘)。
(defun tester (&body pikachu)
(mapcar #'+ @pikachu))
在这里,我在@
前面使用了pikachu
符号,因为我认为这会使我的pikachu
成为一个列表(而不是raichu
)。好吧,那没有发生,我得到了同样的错误
另一个版本:
(defun tester (&body pikachu)
(mapcar #'+ pikachu))
这也给出了同样的错误。
然后根据this link,&rest
和&body
大致相同,&rest
只需一个列表,&body
采用隐式{{ 1}}参数。
这没有说实话。所以,我想知道progn
在lisp函数中是如何工作的。