2011-01-30 1 views
2

시퀀스를 반복하면서 각 요소에 대해 조건부로 연산을 수행 한 다음 수집합니다 (조건과 일치하는 경우에만). 여기에 작동하는 간단한 예 난 그냥이 적절한 또는 혀짤배기에 가장 좋은 방법은 있는지 알고 싶어한다 :조건부 무언가 수집 모범 사례?

(loop for n in '(1 2 3 4 5) 
      when (when (equal (mod n 2) 0) n) 
      collect it) 

이 작동

(2 4) 

산출, 그냥 나에게 재미보고 그리 대부분의 경우지만, 내가 원하는 것을 돌려주는 조건을 조정할 필요가 있다고 느끼기 때문에. 나는 그에게 anaphoric을 얻는다 는 언제 평가 받는다. 그러나 이것은 단지 나에게 약간 인공의 것처럼 보인다. 내가 놓친 게 있니? 나는 겨우 몇 주 동안의 속임수였습니다.

편집 : 실제로 이것을 적용하려고하면 다소 혼란 스럽습니다.

(loop for n in '(1 2 3 4 5) 
     when (when (equal (mod n 2) 0) n) 
     collect it 
     do (format t "~A" it)) 

하지만 언 바운드 될 것으로 보인다 두 번째 ...이 어떻게해야합니까

: 내가 정말하고 싶은 것은 이것이다?

+0

숫자를 비교하려면 = 또는 EQL을 사용할 수 있습니다. –

답변

4

왜 여기에 아나 폰이 필요한지 알 수 없습니다.

(loop for n in '(1 2 3 4 5) 
     when (evenp n) 
     collect n and 
     do (format t "~A" n)) 

FORMAT을 무조건 원하는 경우 AND 키워드를 삭제하십시오.

+0

감사합니다. AND는 제가 누락 된 것입니다. –