Common Lisp HyperSpe c: обработка несвязанных символов в соответствующих реализациях - PullRequest
2 голосов
/ 26 апреля 2020

Это довольно технический вопрос о соответствии реализаций ANSI Lisp spe c:

В Разделе 2.3.4 , он говорит, что токен читается как символ, который не является доступный в текущем пакете помечается как новый символ в текущем пакете.

В Раздел 3.1.2.1 , он говорит, что если символ не связан, выдается ошибка.

Что происходит с несвязанными символами между итерациями REPL? Удастся ли соответствующая реализация удалить несвязанные символы из текущего пакета или она будет продолжать интернировать символы, пока REPL не займет всю доступную память?

1 Ответ

5 голосов
/ 26 апреля 2020

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

Читателю все равно, будет ли символ связан или нет. Это становится актуальным, только если вы попытаетесь оценить символ. Но символы могут использоваться без оценки, например, как часть данных в кавычках, или когда программа сама вызывает READ.

...