[Scheme] 리스트와 평가 방지 따옴표

[원본 링크]

Scheme은 여타 Lisp 친구들과 마찬과지로, 함수에 몹시도 집착하는 언어적 구조를 가지고 있다.
그래서 스킴은 무슨 식별자나 리스트를 보더라도 '전부' 함수 표현식으로 인식해서 함수 호출을 해버린다.

때문에 이런식의 리스트 선언을 시도해도 image

image (1 2 3)을 함수로 처리해버린다. 1이 함수고 2와 3이 인자라는 것이다...

이걸 리스트로 읽게 만들기 위해서는 함수로 평가하지 말라고 인터프리터에게 말을 해줘야 하는데, 그게 따옴표다.
따옴표를 붙이면 평가의 대상이 되지 않는다. image

image 이렇게 말이다.

그리고 리스트를 처리하기 위한 이런저런 함수들이 제공된다.
대표적인 것 일부만 보이겠다.

car 함수
이건 리스트의 첫번째 값만 가져온다.
cdr과 어울려서 리스트를 재귀로 순환할때 주로 사용된다. image

image


cdr 함수
첫번째를 뺀 나머지 목록의 리스트를 반환한다. image

image


저 두개를 합치면 재귀함수를 통해 손쉽게 순회를 할 수 있다. image

image 이렇게 말이다.


length 함수
리스트의 길이를 반환한다. image

image


list 함수
리스트 생성용 함수다. 평가 방지를 쓰지 않고 리스트를 생성할 수 있다. image

image


list? 술어
인자가 리스트인지 파악한다. image

image

image

...등등 많다.

나머지는 아래 문서를 참조하길 바란다.


참조
https://docs.racket-lang.org/reference/pairs.html