Доступ к активной таблице символов в Common Lisp - PullRequest
6 голосов
/ 20 сентября 2010

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

Ответы [ 2 ]

8 голосов
/ 20 сентября 2010

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

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

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

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

6 голосов
/ 20 сентября 2010

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

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

Примерно так в коде. Определите useful-symbol-p, как считаете нужным:

(let ((lst ()))
   (do-all-symbols (s lst)
     (when (useful-symbol-p s) (push s lst)))
   lst)
...