在用户定义函数中使用 &body Lambda 列表关键字



在宏中使用了&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))

也给出了同样的错误。


然后,根据此链接,&rest&body大致相同,&rest仅列出一个列表,而&body采用了一个隐式的progn参数。

这没什么明白的。因此,我想知道&body在LISP功能中的工作原理。

&身体是 acro lambda列表元素。您永远无法在函数中使用它。&休息应用于同样效果的普通函数中。

如果您读取了链接到的新闻组线程,则会看到相同的内容:&body&rest之间的唯一区别是将传达给读者传达的程序员。

ps。@是反语录外的非法。

最新更新