기본 Q 유형

구성이 잘된 모든 표현식에는 정확한 유형이 사용됩니다. Q의 두 가지 기본 유형은 다음과 같습니다.

문자열, 정수, 실수 및 부울 유형의 범위는 해당 기본 값이고 regexp의 범위는 정규식이며 오브젝트의 범위는 메타클래스 인스턴스입니다.

참고: 오브젝트는 모든 메타클래스의 인스턴스를 포함합니다. 따라서 클래스 및 패키지의 인스턴스에 모두 유형 오브젝트가 들어 있습니다.

기본 유형 외에도 Q 언어는 튜플, 콜렉션 및 함수와 같은 생성된 유형의 세 가지 양식을 지원합니다.

튜플

α, β, … 및 ω의 경우 표현식 α x β x … x ω가 컴포넌트 유형 α, β, … 및 ω로 튜플 유형을 표시합니다. 예를 들어, string x integer는 첫 번째 컴포넌트가 문자열이고 두 번째 컴포넌트가 정수인 쌍의 유형입니다.

콜렉션

콜렉션은 가능한 중복이 포함된 목록입니다. α 유형의 경우 α collection은 α의 콜렉션 유형을 표시합니다. 일부 예제는 object collectionstring collection입니다.

함수

α 및 β의 경우 α → β는 α 유형의 매개변수를 사용하고 β 유형 값을 리턴하는 함수를 표시합니다. 예를 들어, stringinteger는 문자열을 사용하고 정수를 리턴하는 함수 유형입니다.

제한사항

이 유형 표시의 설계에서는 임의의 복합 유형을 수용하지만 실제로 복잡도를 제한하는 현재 구현에는 여러 제한사항이 있습니다. 특히, 현재 구현에서 기본 유형, 기본 유형의 튜플, object collection, string collection 및 이러한 지원되는 유형을 사용하고 리턴하는 함수(리턴 유형에 대한 튜플 제외)를 지원합니다. 또한 유형(objectstring) x object collectionstring collection(기본 제공 함수 맵의 유형), (objectboolean) x object collectionobject collection(기본 제공 함수 필터의 유형) 및 순회와 정렬을 위한 기타 유형에 대한 특수 지원이 있습니다.

복잡한 유형 예

더욱 복잡한 유형에 대한 몇 가지 예는 다음과 같습니다.

  • string x realboolean: 첫 번째 유형이 문자열이고 두 번째 유형이 실수인 두 컴포넌트의 튜플을 사용하고 부울을 리턴하는 함수입니다.
  • (object → string) x object collection → string collection: 함수(object → string 유형) 및 오브젝트 콜렉션을 사용하고 문자열 콜렉션을 리턴하는 함수입니다.

피드백