2012-02-28 3 views
1

의 목록과 mpair I가 다음 코드와 주석 등의 평가 :단점, 라켓

(require scheme/mpair) 

(list)     ;; '() 
(mlist)     ;; '() 

(cons 'un (list))  ;; '(un) 
(list 'un (list))  ;; '(un()) 

(mcons 'un (mlist))  ;; (mcons 'un '()) 
(mlist 'un (mlist))  ;; (mcons 'un (mcons '() '())) 

내 질문 :

  1. 왜하지 않습니다 3 표현 반환 '() 대신 '(un .())?

  2. 왜 제 5 번째 표현식과 제 6 번째 표현식이 같은 것을 반환하지 않습니까?

답변

5

일반적으로, (list x y z)(cons x (cons y (cons z empty)))의 약자이다. (list)은 빈 목록 (예 : empty)입니다. 따라서 (list 'un (list))(cons 'un (cons empty empty))의 약어 일뿐입니다. 두 개의 요소가있는 목록 : 기호 'un 및 빈 목록. mlist은 마찬가지로 mcons의 시퀀스를 약어로 empty 끝에 붙입니다.