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