2009-06-04 4 views

답변

4

DrScheme, 당신의 cons -ing 마음을하지 않습니다. 참조 번호

즉, cons은 쌍을 만듭니다. 이 목록은하지 않은

> (cons 1 2) 
(1 . 2) 

을 할 수도 완벽하게 합법적이다,하지만 여전히 할 수있는 당신은 어쨌든

> (car (cons 1 2)) 
1 
> (cdr (cons 1 2)) 
2 

단, "빈 말"과 "빈 목록"을 수행 같은 객체 , 확인할 수있는대로

> (eq? empty '()) 
#t 
1

마지막 쌍의 cdr은 빈 목록 인 '()'을 가리 킵니다.

+0

왜 (비어 있음) 작동합니까? – unj2

+1

모든 목록은 길이가 각각 2 인 일련의 목록으로 구성됩니다. 예를 들어, (1 2 3)은 실제로 길이가 2 인 목록입니다. 첫 번째 항목은 1이고 두 번째 항목은 (2 3)입니다. 이 내부 목록은 길이 2의 목록이기도합니다. 첫 번째 항목은 2이고 두 번째 항목은 (3)입니다. 두 번째 항목은 실제로 두 항목 목록입니다. 첫 번째 항목은 3이고 두 번째 항목은()입니다. cons ('a'())는 실제로 ('a.'())이기 때문에 ('a)를 반환합니다. –

1

기호 empty을 평가하면 모든 질문에 대한 답을 찾을 수 있습니다. 빈 목록 인 '()과 같은 것으로 정의되며 마지막 cdr이 가리키는 내용입니다. 자신을 설득하려면 다음을 수행하십시오 cons 그냥 목록을 구축보다 더 많은 일을 할 수 있기 때문에

(cdr (list 1 2 3)) 
(cdr (cdr (list 1 2 3))) 
(cdr (cdr (cdr (list 1 2 3)))) 
+0

그것은 내 질문의 일부에 답해 주지만, 나는 방금 cdr이 비어 있음을 가리킬 필요가 없다는 것을 깨달았다. 나는 (b .d)와 같은 부적절한 목록을 가질 수 있습니다. 어쨌든 고마워. – unj2

관련 문제