2013-02-22 65 views
1

如何获取提供给Lisp函数的参数数目,如bash中变量$ 0所示? (我看到一个类似的问题,但它没有给出答案。)如何获取提供给lisp函数的参数个数

+0

你知道如何定义一个可变参数的函数吗?最简单的函数定义不会,所以毫无疑问传递了多少个参数。如果您学习如何定义可变参数函数,将很容易找出如何确定传递了多少个参数。 – Mars 2013-04-05 05:17:04

回答

3

这并不清楚你在问什么,但在Common Lisp中,你可以使用&rest参数来收集一个不确定数量的参数到列表中。使用length你可以看到提供了多少个。例如:

CL-USER> (defun numargs (&rest arguments) 
      (length arguments)) 
NUMARGS 
CL-USER> (numargs 1 2 3) 
3 
CL-USER> (numargs 1 2 3 4 5) 
5 
CL-USER> (numargs) 
0 

因为这个问题有标签,你可能会感兴趣的特定SBCL的解决方案。 sb-introspect:function-lambda-list看上去相关:

CL-USER> (sb-introspect:function-lambda-list 'cons) 
(SB-IMPL::SE1 SB-IMPL::SE2) 
CL-USER> (sb-introspect:function-lambda-list 'numargs) 
(&REST ARGUMENTS) 

如果检查拉姆达列表,你可以决定一个函数可以有多少论据走。

相关问题