2013-10-21 4 views
0

I는 소스 버퍼에서이 쓰기왜 Lisp은이 기능이 정의되지 않았다고 말합니까?

(defun make-cd (artist album rating like) 
    (list :artist artist :album album :score rating :like like)) 
(defvar *dab* nil) 
(defun addcd (cd) (push cd *dab*)) 
(defun readab() 
    (dolist (cd *dab*) 
    (format t "~{~10t~a--~5t~a~%~}~%" cd))) 

난의 C-C-C (k)를 눌러 REPL로 컴파일한다.

CL-USER> (make-cd "dixie" "fun time" 6 "y") 
(:ARTIST "dixie" :ALBUM "fun time" :SCORE 6 :LIKE "y") 
CL-USER> (addcd (make-cd "dixie" "whooola" 6 "y")) 
((:ARTIST "dixie" :ALBUM "whooola" :SCORE 6 :LIKE "y")) 

그러나 마지막은 정의로보고됩니다

첫 번째 여러 가지 기능이 REPL에서 잘 작동?

CL-USER> (readab) 
    ; Evaluation aborted on #<CCL::UNDEFINED-FUNCTION-CALL #x302000B3895D>. 

나는 아주 분명한 것을 놓치고 있습니까?

+0

wfm in clisp - 오류가 없으므로 예상대로 출력됩니다. 디버거를 사용해보십시오. – sds

+0

원래 코드가 작동합니다. 어쩌면 패키지에 어떤 일이 벌어지고 있을까요? 소스 버퍼의 처음에'(in-package : cl-user)'를 추가해보십시오. – jlahd

답변

1

문제는 C-C C-k 명령이 처리되기 전에 자동으로 소스를 저장하지 않아서 소스의 이전 저장에서 처리가 진행되고 있기 때문입니다. 먼저 저장하고 문제가 사라집니다.

관련 문제