Доступ к активной таблице символов в Common Lisp
Я слышал, что активная таблица символов доступна во время выполнения Common Lisp. Я неправильно понял?
2 ответа
"Таблицы символов" называются "пакетами" в Common Lisp. См. Например: Введение в пакеты, CL HyperSpec.
В Common Lisp доступно несколько операций над пакетами: словарь пакетов.
Символы могут быть членами пакетов (будучи интернированными).
Переменная *package* содержит пакет в качестве значения, которое используется несколькими операциями, которые используют пакет по умолчанию. Примером является ' reader', который по умолчанию ищет в пакете *package*.
Ты можешь использовать do-all-symbols
,
Смотрите здесь для аналогичного вопроса. Принятый ответ также содержит некоторые сведения о пакетах, что очень удобно.
Примерно так в коде. определять useful-symbol-p
как вы считаете нужным:
(let ((lst ()))
(do-all-symbols (s lst)
(when (useful-symbol-p s) (push s lst)))
lst)