在用户定义的函数中使用 &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
的网络在宏中有很多例子。它只能通过反引号内的 ,@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 函数中究竟是如何工作的。