在用户定义的函数中使用 &body Lambda List 关键字

Use of &body Lambda List Keyword in user-defined functions

&body 的网络在宏中有很多例子。它只能通过反引号内的 ,@body 访问。但是我们如何在函数中使用 &body lambda-list 关键字。我尝试使用此关键字创建许多函数,但它们所能做的只是 return 我是一个错误说
&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取一个隐式progn 个参数。

老实说,这并没有说明什么。所以,我想知道 &body 在 lisp 函数中究竟是如何工作的。

&body 是一个 lambda 列表元素。 您永远不能在函数中使用它。 &rest用在普通函数中也是一样的效果。

如果你阅读你 link 的新闻组线程,你会看到同样的事情:&body&rest 之间的唯一区别是程序员传达给 reader.

PS。 @backquote 之外是非法的。