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
'프로그래밍 Programming' 카테고리의 다른 글
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 |