`OR` — 오어 복합 타입 지정자

OR — 오어 복합 타입 지정자

"이 값은 어느 여러 타입 중 하나야"라고 범위를 느슨하게 열어두고 싶을 때가 있어요. 타입들의 합집합(union)을 만드는 복합 타입 지정자가 or예요. CLOS에서 리스트가 (or null cons)로 정의되는 것처럼, 이 지정자는 실제로 아주 흔하게 쓰여요.

출처: Common Lisp HyperSpec — Type Specifier OR

본문

복합 타입 지정자의 종류

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

복합 타입 지정자 문법

or typespec*

복합 타입 지정자 인자

  • typespec — 어떤 타입 지정자.

설명

or은 나열된 타입 지정자들의 합집합으로 결정되는 타입에 속하는 모든 객체들의 집합을 뜻해요.

예를 들어 커먼 리스프에서 리스트 타입은 정의상 (or null cons)과 같아요. 또 position이 반환하는 값은 (or null (integer 0 *)) 타입이 되는데, 이는 "nil이거나 음이 아닌 정수"라는 뜻이에요.

주의할 점은 다음과 같아요.

  • *는 인자로 허용되지 않아요.
  • (or)nil은 동등한 타입이에요. 즉 아무것도 나열하지 않으면 빈 타입이 되죠.
  • or이라는 심볼 자체는 타입 지정자로 유효하지 않아요. 즉 (or)의 축약형이 아니에요.

함께 보기

  • and 타입, not 타입
  • position 함수