【发布时间】:2012-07-30 00:55:11
【问题描述】:
可能重复:
In Lisp, how many inputs can the + function actually have?
以下代码给出“参数过多”错误:
(setf u (loop for i upto 50000 collect 1))
(apply #'+ u)
类似
(apply #'= u)
所以我猜想在用 &rest 编写 defun 时,参数的数量是有上限的。它是什么?我搜索并尝试了here 以及该网站上的各种页面,但我无法弄清楚。
【问题讨论】:
-
语言规范不是实现。理想情况下会有“没有限制”,但实现(和硬件限制)..
-
我明白了。所以这取决于实施。我只是想知道语言是否对此设置了下限。我在CLisp和Clozure CL中试过
(defun crazy(n) (apply #'+ (loop for i upto n collect 1))),分别是4095和65535。 -
好吧,您可以期望任何实现至少采用 3 个参数,您现在可能想要该下限的上限,不是吗? :-)
-
是的,我想要一个最大值的下限。现在我发现答案是由 CALL-ARGUMENTS-LIMIT 给出的
标签: common-lisp