데이터와 집합 타입

현재 값 공간에는 불리언과 정확수, 부정확수, 문자, 심볼, 문자열, 빈 리스트, 쌍, 벡터, 바이트벡터, 프로시저, 탈출 연속이 있습니다.

언제 필요한가요?

하려는 일을 가장 잘 드러내는 작은 값 형태를 고르세요. 사실 하나에는 원자 값, 순서가 있는 데이터에는 올바른 리스트, 인덱스로 바꿔 쓰는 칸에는 벡터, 제한된 바이트에는 바이트벡터가 알맞습니다.

실행으로 확인하기

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)호출 가능한 값, 본문은 데이터가 아님

흔한 오해

복소수와 포트, 레코드, 변경 가능한 쌍과 문자열은 현재 프로필 밖입니다.

현재 경계

  • 내부 결과와 신호, 미초기화 센티널은 게스트 값이 아닙니다.

다음으로

생성자와 접근자는 리스트·집합 프로시저에 있습니다. 동일성 비교와 구조 비교의 차이는 동등성에서 확인하세요.

리스트·집합 프로시저 · 동등성과 동일성