시스템 클래스 CONS — 콘즈(cons)

시스템 클래스 CONS — 콘즈(cons)

Lisp 하면 가장 먼저 떠오르는 데이터 구조가 바로 cons 셀이죠. 리스트의 기본 구성 요소인 cons가 정확히 무엇인지, 그리고 타입 지정자로는 어떻게 쓰는지 정리한 페이지예요.

출처: CLHS — System Class CONS

클래스 우선순위 목록

cons, list, sequence, t

본문 (Description)

conscarcdr 라고 불리는 두 구성 요소를 가진 복합 객체(compound object)입니다. 이 두 요소는 점 쌍(dotted pair) 을 이루는데, 각 구성 요소는 어떤 객체든 될 수 있어요.

(cons a b) 같은 형태로 두 객체를 묶으면 그것이 곧 cons이고, 리스트는 이런 cons들이 nil로 끝나도록 이어 붙인 구조라 볼 수 있죠.

복합 타입 지정자 (Compound Type Specifier)

  • Kind: Specializing
  • 구문:
cons [car-typespec [cdr-typespec]]
  • 인자:

    • car-typespec — 타입 지정자 또는 기호 *. 기본값은 *.
    • cdr-typespec — 타입 지정자 또는 기호 *. 기본값은 *.

cons 타입 지정자는 specializing 종류로, car가 car-typespec 타입으로, cdr이 cdr-typespec 타입으로 제약된 cons들의 집합을 나타냅니다. car-typespeccdr-typespec*이면, 마치 t 타입이 지정된 것처럼 동작해요.

더 알아보기 (Learn more)