lisp - 如何获取提供给 lisp 函数的参数数量

标签 lisp common-lisp sbcl

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

最佳答案

不清楚您到底在问什么,但在 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)

如果您检查 lambda 列表,您可以确定一个函数可以接受多少个参数。

关于lisp - 如何获取提供给 lisp 函数的参数数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15030122/

相关文章:

lisp - 组合 DrRacket 隐式 else

lisp - SICP 练习 3.8 - 为什么程序有效? (我觉得是环境问题)

lisp - CLISP 中的意外评估结果

lisp - 常见的 lisp 函数/特殊形式/宏/等是什么。名字的意思,我在哪里可以找到这些信息?

lisp - 如何使用双 float ?

multithreading - 常见的Lisp : Run function in the background

common-lisp - 如何在 SBCL/Common Lisp 中与进程输入/输出交互

closures - Paul Graham 的 ANSI Common Lisp 中的 Compose 示例

linux - 在 Linux 上获取 Common Lisp 进程 ID

lisp - 普通口齿不清 : "no non-white-space characters in string"