在宏中使用了&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。@
是反语录外的非法。