просмотреть определения в LISP - PullRequest
4 голосов
/ 24 января 2011

Я очень новичок в LISP.Я использую аллегро-кл.У меня возникают трудности с вызовом функции, которую я определил и загрузил.Я хотел бы знать, каким образом я могу просмотреть определенные вещи, например, перечислить все методы в определенном пакете, перечислить только переменные, перечислить имена пакетов и т. Д.

Ответы [ 3 ]

4 голосов
/ 24 января 2011

Я не использую Allegro CL, поэтому я могу рассказать вам только об инструментах, которые CL предоставляет для этого.Возможно, вы захотите проверить, что Allegro CL IDE может предложить для этой задачи.

Вы можете получить список всех пакетов с помощью функции LIST-ALL-PACKAGES.Вы можете использовать это для печати их имен:

(dolist (p (list-all-packages)) (write-line (package-name p)))

Пакеты CL - это наборы символов (т.е. имен), а не объекты, связанные с этими именами.Вы должны запросить имена в них далее, чтобы увидеть, есть ли значение и / или функция, определенная для этого символа.Вы можете использовать DO-SYMBOLS для циклического перебора всех символов в пакете.Это напечатало бы все символы в текущем пакете:

(do-symbols (s) (print s)

это только функции:

(do-symbols (s) (when (fboundp s) (print s)))

и это только функции, чей домашний пакет является текущим пакетом:

(do-symbols (s)
  (when (and (eq (symbol-package s) *package*)
             (fboundp s))
    (print s)))
3 голосов
/ 25 января 2011

Если вы помните часть имени, вы всегда можете использовать APROPOS (возможно, ограниченный определенным пакетом), чтобы найти полное имя.

0 голосов
/ 05 августа 2011

Я столкнулся с той же проблемой.Прочитав документацию, я пришел к мнению, что нет способа вызвать определение, введенное в REPL.

Чтобы обойти эту проблему, я всегда печатаю в окне редактора (Ctrl + N, если его нет).Таким образом, я могу набирать определения, редактировать их и т. Д. С большим удобством.Если мне нужно оценить определение, я нажимаю Ctrl + E для дополнительной оценки (см. Другие параметры в меню «Инструменты»).Я держу окно слушателя слева и окно редактора справа, чтобы увидеть входы и выходы.

Есть еще небольшая проблема, которая может даже вызвать некоторые ошибки: если вы забудете оценить определение после того, каквнесены изменения, старый остается в REPL.Продолжайте нажимать Ctrl + E.

Если у вас открыто несколько файлов и вы хотите найти определение в одном из исходных файлов, вы можете использовать Поиск> По поводу.

...