728x90
    
    
  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 | 
728x90
    
    
  'Season 1 아카이브 > 프로그래밍' 카테고리의 다른 글
| Getting Started with CLISP (12) - nil 과 () (0) | 2017.09.16 | 
|---|---|
| Getting Started with CLISP (11) - 중첩리스트 Nested Lists (0) | 2017.09.16 | 
| Getting Started with CLISP (9) - Cons Function (0) | 2017.09.16 | 
| Getting Started with CLISP (8) - 콘셀(Cons Cells) (0) | 2017.09.16 | 
| Getting Started with CLISP (7) - 리스프는 코드와 데이터를 어떻게 구분하는가 How Lisp Distinguishes Between Code and Data (0) | 2017.09.15 |