You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SBCL Lisp中获取Lambda函数的参数列表?

在SBCL中获取Lambda函数的参数列表及相关信息

核心方法:使用SBCL专属自省函数

SBCL提供了一组专属自省函数,可直接提取describe展示的各类信息,无需手动解析输出文本。

获取lambda-list(参数列表)

调用sb-introspect:function-lambda-list函数就能直接拿到目标函数的参数列表:

* (setf f (lambda (a b) (* a b)))
#<FUNCTION (LAMBDA (A B)) {535B3C3B}>
* (sb-introspect:function-lambda-list f)
(A B)

获取其他关联信息

如果需要describe输出里的其他字段,也有对应函数可用:

  • 派生类型:sb-introspect:function-type
  • 源码形式:sb-introspect:function-source-form
  • 文档字符串:documentation(通用Common Lisp函数,非SBCL专属)

示例代码:

* (sb-introspect:function-type f)
(FUNCTION (T T) (VALUES NUMBER &OPTIONAL))
* (sb-introspect:function-source-form f)
(LAMBDA (A B) (* A B))
* (documentation f 'function)
T

注意事项

  • 上述sb-introspect命名空间下的函数是SBCL专属实现,换用其他Common Lisp环境(如CCL、CLISP)时无法使用。
  • 无论lambda函数是否编译,这些函数都能正常返回对应信息。

内容的提问来源于stack exchange,提问作者jshrager

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 03:57:41