Q: Как создать и использовать :keywords
?
Рассмотрим (наивно, по-видимому) попытку доступа к следующему списку игрушек:
(setf alist '((:key-1 "Key no. 1")
(:key-2 "Key no. 2")))
(assq :key-1 alist) ; => (:key-1 "Key no. 1")
(assq (make-symbol ":key-1") alist) ; => nil
Первый ключ работает как положено, а второй - нет. Поскольку нет очевидной make-keyword
функции, как можно создать и использовать ключевое слово?
Первоначальная мотивация: мне нужно преобразовать строку в ключ поиска, который является символом, для которого я могу put
свойства.
В процессе формулирования этого вопроса я получил хотя бы часть ответа, который я публикую отдельно. Я надеюсь, что более яркие умы, чем мои, могут улучшить это.
(eq :foo (read ":foo"))