如何获得一些函数参数的lambda列表规范,或者至少需要一些参数呢?
例如:
(defun a (a b) )
(get-arg-list #'a) ;-> '(a b)
答案 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)