【发布时间】:2013-06-12 19:37:52
【问题描述】:
既然 Common Lisp 的函数参数按从左到右的顺序计算,为什么不使用普通函数:
(defun progn2 (&rest body)
(first (last body)))
而不是特殊形式?
【问题讨论】:
-
defun不是已经包含隐含的progn了吗?检查defun的宏扩展。 -
@sds 和 @RainerJoswig 的回答都很重要。 @sds 的答案中的
values是您偶尔会发现的东西,@RainerJoswig 描述的行为非常重要,尤其是当您开始将基于宏的顶级表单放入源代码时;如果这些生成的表单超出了应被视为顶级的表单,那么您需要progn。
标签: common-lisp