2014-09-28 2 views
0

전무 멤버 함수 반환한다. 지금까지 내가 말할 수있는 - - true를 돌려 내가 (eq '() (member x *DSTATES*))을 수행 할 때은 왜 목록이

(map '() #'(lambda (x) 
      (princ "Looking at transition ") (princ x) 
      (prinC#\newline) 
      (if (and (eq '() (member x *DSTATES*)) (not (eq '() x))) 
       (progn 
       (princ x) (princ " is not a member of *DSTATES*") 
       (prinC#\newline) 
       (setq *DSTATES* (append *DSTATES* (list x))))) 
      (princ "Intermediate *DSTATES* ") (princ *DSTATES*) 
      (prinC#\newline) (prinC#\newline)) 
     trans) 

은 항상 :

여기 내 코드입니다. 이 때문에 *DSTATES* 크기가 커지고 커지면 내 루프는 *DSTATES* 크기의 정지 조건을 종료하지 않습니다.

어떻게 해결할 수 있습니까?

+0

스타일의 문제 일을하는 데 도움이

희망 : 목록의 끝에 추가하지 않습니다. –

+1

스타일 문제 2 :'(eq '() foo)'는 (null foo)'입니다. 부울 값이면'(not foo)'를 사용하십시오. –

+0

그런 조언을 해주셔서 감사합니다. 목록 끝에 추가하는 것이 잘못된 이유는 무엇입니까? – myselfesteem

답변