갈루아의 반서재

리스트


리스트에는 순서가 있다.

인용기호 ' 를 괄호 앞에 붙이고 그 안에 데이터를 넣으면 된다.

문자열, 정수, 키워드 같은 여러 종류의 값을 혼합해 나열할 수 있다.

요소들 사이에 쉼표가 없어도 무방하다.  쉼표는 공백문자처럼 취급되어 무시된다 (가급적 공백을 사용하는 것을 추천한다)

1
2
3
4
 
user=> '(1 2 "jam" :marmalade-jar)
(1 2 "jam" :marmalade-jar)
 
cs


리스트는 첫 요소와 나머지 요소로 구분된다. 첫번째 요소는 first 함수로 가져오고, rest 함수로 나머지 요소를 가져올 수 있다.

1
2
3
4
5
6
7
 
user=> (first '(:rabbit :pocket-watch :marmalade :door))
:rabbit
user=> (rest '(:rabbit :pocket-watch :marmalade :door))
(:pocket-watch :marmalade :door)
user=>
 
cs

그리고 first 와 rest 함수를 혼합해서 사용할 수 있다. rest 를 계속 사용해서 리스트의 마지막에 다다르면 nil 을 만나게 된다.


cons 라는 함수로 리스트를 만들 수 있다. cons 함수는 2개의 인수를 받는다. 추가하고자하는 요소와 그 요소가 추가될 리스트이다. nil 은 리스트의 끝을 표시하므로, 요소를 nil 에 cons 하는 방식으로도 가능하다.

1
2
3
4
5
6
7
8
9
 
user=> (cons 5 '())
(5)
user=>
 
user=> (cons 5 nil)
(5)
user=>
 
cs

인용기호와 더불어 list 함수를 이용해서도 리스트 생성이 가능하다. 

1
2
3
4
5
6
7
8
9
10
11
 
user=> '(1 2 3 4 5)
(1 2 3 4 5)
user=>
 
user=>
 
user=> (list 1 2 3 4 5)
(1 2 3 4 5)
user=>
 
cs