언제 필요한가요?
용도를 가장 잘 드러내는 작은 값 형태를 고르세요. 사실 하나는 원자 값, 순서 있는 데이터는 올바른 리스트, 인덱스로 바꿀 칸은 벡터, 제한된 바이트는 바이트벡터가 알맞습니다.
실행으로 확인하기
LISPEX
(list (vector? #(1 2)) (bytevector? #u8(1 2)) (pair? (cons 1 2)))관측 결과
OUTPUT
(#t #t #t)예제 읽기
예제는 서로 다른 집합 값 세 개에 각각 타입 술어를 적용합니다. 각 생성자가 문서화된 종류의 값을 만들므로 결과는 참 세 개가 든 리스트입니다.
이 순서로 생각하세요
- 현재 프로필에서 쌍, 문자열, 바이트벡터는 불변이며 벡터와 어휘 셀은 변경 가능합니다.
- 인용한 집합 데이터는 불변이며 생성자는 문서화된 동일성 규칙을 지닌 런타임 집합을 만듭니다.
- 부적절·순환 구조는 올바른 리스트와 구분되며 깊은 동등성은 순환에서도 종료합니다.
빠르게 고르기
| 값 계열 | 대표 표기 | 현재 프로필의 변경 가능성 |
|---|---|---|
| 원자 값 | #t, 42, 2/3, name, #\\a | 해당 없음 |
| 리스트 / 쌍 | (list 1 2), (cons 1 2) | 불변 |
| 문자열 | "hello" | 불변 |
| 벡터 | #(1 2) 또는 (vector 1 2) | 칸 변경 가능 |
| 바이트벡터 | #u8(1 2) | 불변 |
| 프로시저 | (lambda (x) x) | 호출 가능한 값; 본문은 데이터가 아님 |
흔한 오해
복소수, 포트, 레코드, 변경 가능한 쌍·문자열은 현재 프로필 밖입니다.
현재 경계
- 내부 결과, 신호, 미초기화 센티널은 게스트 값이 아닙니다.
다음으로
리스트·집합 프로시저에서 생성자와 접근자를 찾고, 동등성에서 동일성 비교와 구조 비교를 구분하세요.