函数需要多少个参数?

时间:2012-06-24 04:18:45

标签: lisp common-lisp

如何获得一些函数参数的lambda列表规范,或者至少需要一些参数呢?

例如:

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

3 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:2)

这是特定于实现的,但此CLHS功能可能会让您入门 - http://clhs.lisp.se/Body/f_descri.htm

答案 2 :(得分:1)

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

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

(ql:quickload "swank")

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

CL-USER> (swank-backend:arglist #'a)
(A B)