2012-06-24 40 views

回答

4

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

LispWorks定义了一个函数FUNCTION-LAMBDA-LIST,它返回参数列表。

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

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

2

这是实现特定的,但是这CLHS功能可以让你开始 - http://clhs.lisp.se/Body/f_descri.htm

+0

顺便说一句,你知道一个库,它会为主要实现引入一些抽象级别吗? – Necto

+0

Hi Necto,请看看Elias和Rainer的其他答案。 (顺便说一句,Rainer有一个非常好的页面,不知道它是否仍然在线显示Common Lisp的所有荣耀) – malkia

1

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

的方式来使用它加载泥,这是最容易通过Quicklisp完成:

(ql:quickload "swank") 

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

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

稍微纠正一下,不能quickload“slime”,因为quicklisp没有它int它默认回购。 但我只是可以(ql:quickload“swank”)。 – Necto

+0

谢谢。这是非常真实的。这是一个错字。我会修复这个帖子。 –