2011-05-06 3 views
1

난 그냥 LISP를 배우고 그리고 난 다음을 수행하는 데 문제가 있어요 :간단한 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

팁 : "단순 LISP 질문에"다음에보다 설명적인 제목을 마련 할 수 있습니다. :-) – Ken

답변

5

변경 get-char 기능 :-) 많은 문자에서 키워드의 목록을 반환합니다 :

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

는 =>(:A :B)(get-char) 평가. 또한 :

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

=>

("1" "2") 
+0

정확히 내가 원했던 것 - 나에게 약간은 비밀 스럽지만 나는 LISP에서 시작하고있다. 그것은 이해가된다 .-)- 감사합니다! – schmoopy