3

一部の関数パラメーター、または少なくともそれが取るいくつかの引数のラムダリスト仕様を取得するにはどうすればよいですか?

例えば:

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

3 に答える 3

4

Common Lisp はFUNCTION-LAMBDA-EXPRESSION、ラムダ リストを含むソース式を復元できる関数を提供します。

FUNCTION-LAMBDA-LISTLispWorks は、arglist を返す関数を定義しています。

ARGLIST他の多くの実装では、何らかの内部パッケージに何らかの形式の機能があります。

多くの Common Lisp ユーザーは、GNU Emacs エディターの非常に賢いエディター拡張機能である SLIME を使用しています。SWANK と呼ばれる Common Lisp のバックエンドがあります。SWANK ソースは、関数の arglist の取得を含む、さまざまな Common Lisp 実装へのあらゆる種類のインターフェイスを提供します。

于 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 に答える