Просмотреть определения в LISP

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

3 ответа

Решение

Я не использую 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)))

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

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

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

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

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

Другие вопросы по тегам