`MEMBER` — 멤버 복합 타입 지정자

MEMBER — 멤버 복합 타입 지정자

"이 값은 딱 이 몇 개 중 하나여야 해"라고 타입으로 표현하고 싶을 때가 있어요. 그럴 때 쓰는 복합 타입 지정자가 member예요. 값 하나하나를 나열해서 그 나열된 값들의 집합을 타입으로 만드는 방식이죠.

출처: Common Lisp HyperSpec — Type Specifier MEMBER

본문

복합 타입 지정자의 종류

결합(Combining) — 여러 타입을 합쳐 새로운 타입을 만드는 종류예요.

복합 타입 지정자 문법

member object*

복합 타입 지정자 인자

  • object — 어떤 객체.

설명

member나열된 객체들의 집합을 뜻해요. 어떤 객체가 이 타입에 속할 조건은 간단한데, 나열된 객체 중 하나와 eql이면 그 타입이 되는 거예요.

몇 가지 헷갈리기 쉬운 세부 규칙이 있어요.

  • (member)nil은 동등한 타입이에요. 즉 아무것도 나열하지 않으면 빈 타입이 되죠.
  • *도 객체로 나열될 수 있어요. 이때 *는 특별 취급이 아니라 그냥 심볼 * 자신을 가리켜요. "지정되지 않은 값"을 뜻하지 않아요.
  • member라는 심볼 자체는 타입 지정자로 유효하지 않아요. 즉 (member)(member *)의 축약형이 아니에요.

함께 보기

  • eql 타입