Простой вопрос LISP - PullRequest
       6

Простой вопрос LISP

1 голос
/ 06 мая 2011

Я только изучаю LISP, и у меня возникают проблемы с выполнением следующих действий:

; return ":h :i"
(defun get-char() 
  (loop for char across "ab" 
        collect (concatenate 'string ":" (string char))))

; plist
(defun get-list() (list :a "1" :b "2"))

; I cannot get this to work 
; <-- returns all null, cannot get plist values :-(
(loop for x in (get-char) 
      collect (getf (get-list) x))

; this works fine...
(loop for x in '(:a :b) 
      collect (getf (get-list) x))

Я знаю, что я близко, но я просто что-то упускаю.

Большое спасибо: -)

1 Ответ

5 голосов
/ 06 мая 2011

Измените функцию get-char, чтобы она возвращала список ключевых слов из символов:

(defun get-char() 
  (loop 
    for char across "ab" 
    collect (intern (string-upcase char) :keyword)))

Оценка (get-char) => (:A :B).Кроме того:

(loop for x in (get-char) collect (getf (get-list) x))

=>

("1" "2")
...