У меня есть эта ассоциация-лист в Common Lisp:Как преобразовать строку в символ для использования в качестве ключа в функции «ассоциировать» Lisp?
(defvar base-list (list (cons 'a 0) (cons 2 'c)))
я должен позвонить assoc
, когда мой аргумент типа string
.
Для пары (A . 0)
Мне нужно преобразовать символ «a» в символ, а для пары (2 . C)
Мне нужно преобразовать «2» в символ. Как я могу это сделать?
Это должно работать так:
CL-USER 28 : 1 > (assoc (convert-string-to-symbol "a") base-list)
(A . 0)
CL-USER 28 : 1 > (assoc (convert-number-to-symbol "2") base-list)
(2 . C)
Я попытался с помощью intern
но получил NIL
:
CL-USER 29 : 1 > (assoc (intern "a") base-list)
NIL
Хм..это похоже, но не работает! http://stackoverflow.com/questions/9812393/elisp-how-to-delete-an-element-from-an-association-list-with-string-key –
выйдите из отладчика. –
Часть NUMBER-TO-SYMBOL не имеет смысла, поскольку номер 2 не является символом. –