갈루아의 반서재




The car and cdr Functions


리스트는 2개의 아이템으로 구성된 셀의 긴 체인과도 같다. car 함수는 셀에서 첫 번째 아이템을 꺼낼 때 사용된다. 

1
2
[33]> (car '(pork beef chicken))
PORK
cs

이에 반해 cdr 함수는 리스트의 첫 번째 아이템을 제거한다.

1
2
[35]> (cdr '(prok beef chicken))
(BEEF CHICKEN)
cs

그리고 car 과 cdr 을 결합하여 cadr, cdar, cadadr 같은 함수를 만들어낼 수도 있다. cadr 의 경우 car 와 cdr 을 동시에 쓰는 것과 같다. cadr 의 경우 리스트의 두 번째 아이템을 뽑아낸다. 다음의 예를 보자. 

1
2
3
4
5
6
[37]> (cadr '(pork beef chicken))
BEEF
[37]> (cdr '(pork beef chicken))
(BEEF CHICKEN)
[37]> (car '(beef chicken))
BEEF
cs


1
2
[38]> (car (cdr '(pork beef chicken)))
BEEF
cs

만약 chicken 을 뽑아내고 싶다면 다음과 같이 cddr 을 이용하면 된다.

1
2
[40]> (cddr '(pork beef chicken))
(CHICKEN)
cs


The list Function


앞선 3개의 리스트 함수외에 유용한 함수가 하나 있는데, 바로 list 함수이다. list 함수를 통해 생성된 리스트나 콘셀을 통해 생성된 리스트 양자간에 아무런 차이가 없다. 

1
2
[41]> (list 'pork 'beef 'chicken)
(PORK BEEF CHICKEN)
cs