2012-06-24 7 views

ответ

4

Common Lisp предоставляет функцию FUNCTION-LAMBDA-EXPRESSION, которая может быть в состоянии восстановить исходное выражение, что затем включает лямбда-лист.

LispWorks определил функцию FUNCTION-LAMBDA-LIST, которая возвращает arglist.

Многие другие реализации имеют некоторую форму функции ARGLIST в некотором внутреннем пакете.

Многие пользователи Common Lisp используют SLIME, очень умное расширение редактора для редактора GNU Emacs. Он имеет бэкэнд для Common Lisp под названием SWANK. Источники SWANK предоставляют всевозможные интерфейсы для различных реализаций Common Lisp, включая получение arglist функций.

2

Это зависит от конкретной реализации, но эта функция CLHS может вам начать - http://clhs.lisp.se/Body/f_descri.htm

+0

Btw, знаете ли вы библиотеку, которая представила бы некоторый уровень абстракции для основных реализаций? – Necto

+0

Привет Некто, пожалуйста, взгляните на другие ответы от Элиаса и Райнера. (Btw, Rainer имеет очень приятную страницу, не уверен, что она все еще в сети показывает всю хорошую славу Common Lisp) – malkia

1

Самый простой способ сделать это - использовать библиотеку SWANK, которая используется SLIME.

Способ использовать это, чтобы загрузить SLIME, который легче всего сделать через Quicklisp:

(ql:quickload "swank") 

Затем, вы можете получить список аргументов с помощью следующей функции:

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

Немного исправления, не может быстро загрузить «слизь», потому что у quicklisp нет этого int it по умолчанию Сделки рЕПО. Но я просто могу (ql: quickload «swank»). – Necto

+0

Спасибо. Это очень верно. Это была опечатка. Я исправлю пост. –

Смежные вопросы