유형 시스템

양자 알고리즘의 초점이 데이터 구조의 문제 표현보다 달성되어야 하는 것에 더 초점을 맞추면 언어 디자인에 대한 보다 기능적인 관점을 취하는 것이 자연스러운 선택입니다. 동시에 형식 시스템은 강력한 코드 수식화를 용이하게 하는 프로그램 분석 및 기타 컴파일 시간 검사에 활용할 수 있는 강력한 메커니즘입니다.

대체로 Q# 형식 시스템은 C# 또는 Java와 같은 클래식 언어에서 사용되는 클래스나 인터페이스에 대한 명시적인 개념이 없다는 점에서 상당히 최소화되어 있습니다. 또한 특정 구문이 아직 형식 시스템에 완전히 통합되지 않도록 점진적으로 진행하는 다소 실용적인 방법을 취합니다. 예를 들어 식 내에서 사용할 수 있지만 아직 형식 시스템에 표현이 없는 펀터가 있습니다. 이에 따라 형식 매개 변수화된 호출 가능 항목의 경우와 마찬가지로 현재 할당하거나 인수로 전달할 수 없습니다. Microsoft는 형식 시스템을 보다 완벽하게 확장하고 즉각적인 요구와 장기 계획의 균형을 맞추는 데 점진적인 진전이 있을 것으로 기대합니다.

사용 가능한 유형

Q#의 모든 형식은 변경 불가능입니다.

Type 설명
Unit 유일한 값이 ()인 싱글톤 형식을 나타냅니다.
Int 부호 있는 64비트 정수를 나타냅니다. 은 -9,223,372,036,854,775,808에서 9,223,372,036,854,775,807 사이입니다.
BigInt 모든 크기의 부호 있는 정수 을 나타냅니다.
Double 배정밀도 64비트 부동 소수점 숫자를 나타냅니다. 범위는 -1.79769313486232e308에서 1.79769313486232e308 및 NaN(숫자가 아님)입니다.
Bool 부울 을 나타냅니다. 가능한 값은 true 또는 false입니다.
String 텍스트를 UTF-16 코드 단위 시퀀스로 구성된 으로 나타냅니다.
Qubit 가상 양자 메모리를 처리할 수 있는 불투명한 식별자를 나타냅니다. Qubit 형식의 은 할당을 통해 인스턴스화됩니다.
Result 고윳값이 ±1인 양자 연산자의 고유 공간에 대한 투영 측정 결과를 나타냅니다. 가능한 Zero 또는 One입니다.
Pauli 단일 큐비트 Pauli 행렬을 나타냅니다. 가능한 값은PauliI, PauliX, PauliY 또는 PauliZ입니다.
Range 동일한 간격의 Int 값의 순서가 지정된 시퀀스를 나타냅니다. 은 오름차순 또는 내림차순으로 시퀀스를 나타낼 수 있습니다.
Array 동일한 형식의 값 시퀀스가 각각 포함된 을 나타냅니다.
튜플 각기 다른 형식의 고정된 수의 항목을 포함하는 을 나타냅니다. 단일 요소를 포함하는 튜플은 포함된 요소와 동일합니다.
사용자 정의 형식 다른 형식의 명명된 항목과 익명 항목으로 구성된 사용자 정의 형식을 나타냅니다. 은 생성자를 호출하여 인스턴스화됩니다.
작업 하나의 입력 인수(튜플 값일 수 있음)를 사용하여 하나의 출력(튜플 값일 수 있음)을 반환하는 비결정적 호출 가능 항목을 나타냅니다. 연산 에 대한 호출에는 부작용이 있을 수 있으며 동일한 인수로 호출하더라도 각 호출에 대해 출력이 다를 수 있습니다.
함수 하나의 입력 인수(튜플 값일 수 있음)를 사용하여 하나의 출력(튜플 값일 수 있음)을 반환하는 결정적 호출 가능 항목을 나타냅니다. 함수 에 대한 호출에는 부작용이 없으며 동일한 입력에서 출력은 항상 동일합니다.