Доступ к активной таблице символов в Common Lisp

Я слышал, что активная таблица символов доступна в среде выполнения Common Lisp. Я неправильно понял?


person Eli Schneider    schedule 20.09.2010    source источник
comment
Что вы подразумеваете под активной таблицей символов?   -  person dmitry_vk    schedule 20.09.2010


Ответы (2)


«Таблицы символов» в Common Lisp называются «пакетами». См., например: Введение в пакеты, CL HyperSpec.

В Common Lisp доступно несколько операций над пакетами: Словарь пакетов.

Символы могут быть членами пакетов (будучи "интернированными").

Переменная *package* содержит пакет как значение, которое используется несколькими операциями, использующими пакет по умолчанию. Примером может служить 'reader', который по умолчанию выполняет поиск в упаковке *пакет*.

person Rainer Joswig    schedule 20.09.2010
comment
о, так вот откуда берутся пакеты perl, и почему все typeglobs, которые являются записями, всегда привязаны к пакету O.o - person Dmitry; 11.11.2016

Вы можете использовать do-all-symbols.

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

Что-то вроде этого в коде. Определите useful-symbol-p по своему усмотрению:

(let ((lst ()))
   (do-all-symbols (s lst)
     (when (useful-symbol-p s) (push s lst)))
   lst)
person clstrfsck    schedule 20.09.2010