3

我怎样才能得到一些函数参数的 lambda 列表规范,或者至少它需要一些参数?

例如:

(defun a (a b) )
(get-arg-list #'a) ;-> '(a b)
4

3 回答 3

4

Common Lisp 提供了FUNCTION-LAMBDA-EXPRESSION可以恢复源表达式的函数,然后包含 lambda 列表。

LispWorks 定义了一个FUNCTION-LAMBDA-LIST返回 arglist 的函数。

ARGLIST许多其他实现在某些内部包中具有某种形式的功能。

许多 Common Lisp 用户使用 SLIME,这是 GNU Emacs 编辑器的一个非常聪明的编辑器扩展。它有一个名为 SWANK 的 Common Lisp 后端。SWANK 源代码为各种 Common Lisp 实现提供了各种接口,包括获取函数的 arglist。

于 2012-06-24T10:22:24.580 回答
2

这是特定于实现的,但这个 CLHS 函数可能会让你开始 - http://clhs.lisp.se/Body/f_descri.htm

于 2012-06-24T04:36:28.420 回答
1

最简单的方法是使用 SLIME 使用的 SWANK 库。

使用它的方法是加载 SLIME,通过 Quicklisp 最容易完成:

(ql:quickload "swank")

然后,您可以使用以下函数获取参数列表:

CL-USER> (swank-backend:arglist #'a)
(A B)
于 2012-06-25T03:03:01.800 回答