我怎样才能得到一些函数参数的 lambda 列表规范,或者至少它需要一些参数?
例如:
(defun a (a b) )
(get-arg-list #'a) ;-> '(a b)
我怎样才能得到一些函数参数的 lambda 列表规范,或者至少它需要一些参数?
例如:
(defun a (a b) )
(get-arg-list #'a) ;-> '(a b)
Common Lisp 提供了FUNCTION-LAMBDA-EXPRESSION
可以恢复源表达式的函数,然后包含 lambda 列表。
LispWorks 定义了一个FUNCTION-LAMBDA-LIST
返回 arglist 的函数。
ARGLIST
许多其他实现在某些内部包中具有某种形式的功能。
许多 Common Lisp 用户使用 SLIME,这是 GNU Emacs 编辑器的一个非常聪明的编辑器扩展。它有一个名为 SWANK 的 Common Lisp 后端。SWANK 源代码为各种 Common Lisp 实现提供了各种接口,包括获取函数的 arglist。
这是特定于实现的,但这个 CLHS 函数可能会让你开始 - http://clhs.lisp.se/Body/f_descri.htm
最简单的方法是使用 SLIME 使用的 SWANK 库。
使用它的方法是加载 SLIME,通过 Quicklisp 最容易完成:
(ql:quickload "swank")
然后,您可以使用以下函数获取参数列表:
CL-USER> (swank-backend:arglist #'a)
(A B)