просматривайте определения в LISP
-
24-10-2019 - |
Вопрос
Я очень новичок в LISP. Я использую Allegro-Cl. У меня трудно назвать функцию, которую я определил и загрузил. Я хотел бы знать, как я могу просматривать вещи, которые я определил, например, перечисляя все методы в определенном пакете или перечисляю только переменные, или перечисление имен пакетов и т. Д.
Решение
Я не использую Allegro CL, поэтому я могу только рассказать вам о инструментах, которые CL сама предоставляет для этого. Возможно, вы захотите проверить, что может предложить Allegro Cl IDE для этой задачи.
Вы можете получить список всех пакетов с помощью списка функций-все пакеты. Вы можете использовать его таким, чтобы распечатать их имена:
(dolist (p (list-all-packages)) (write-line (package-name p)))
CL -пакеты - это коллекции символов (т.е. имена), а не объекты, связанные с этими именами. Вы должны запросить имена в них дальше, чтобы увидеть, есть ли значение и/или функция, определенная для этого символа. Вы можете использовать До-символы Чтобы зацикнуть все символы в упаковке. Это распечатало бы все символы в текущем пакете:
(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)))
Другие советы
Если вы помните часть имени, вы всегда можете использовать (возможно, ограниченный конкретным пакетом), чтобы найти полное имя.
Я столкнулся с той же проблемой. После прочтения документации я пришел к мнению, что невозможно вспомнить определение, набравшее в Repl.
Чтобы обойти эту проблему, я всегда ввожу в окно редактора (Ctrl+N, если нет). Таким образом, я могу печатать определения, редактировать их и т. Д. С большим удобством. Если мне нужно оценить определение, я нажимаю CTRL+E для постепенной оценки (см. Другие варианты в меню «Инструменты»). Я держу окно слушателя слева и окно редактора справа, чтобы увидеть входы и выходы.
Есть еще небольшая проблема, которая может даже вызвать некоторые ошибки: если вы забыли оценить определение после того, как внесли в него изменения, старый остается в реплике. Продолжайте нажимать Ctrl+E.
Если у вас есть несколько файлов, и вы хотите найти определение в одном из исходных файлов, вы можете использовать Search> Apropos.