型別系統
由於量子演算法的重點在於要達成的目標,而不是根據資料結構的問題表示法,在語言設計方面更有功能性的觀點是很自然的選擇。 同時,類型系統是一種功能強大的機制,可用於進行程式分析和其他編譯時間檢查,以促進編寫穩固的程式碼。
最重要的是,Q# 類型系統是相當極簡的,沒有類別或介面的明確概念,因為其可能會從傳統語言 (例如 C# 或 Java) 使用。 此外,我們也採用稍微實用的方法來進行累加進度,讓某些建構尚未完全整合到類型系統中。 例如,您可以在運算式中使用函子,但在類型系統中還沒有標記法。 同樣地,目前無法將其指派或傳遞為引數,類似於型別參數化可呼叫檔的情況。 我們預期會在擴充類型系統時增加更完整的累加進度,並以長期計畫平衡立即需要。
可用類型
Q# 中的所有類型都是不可變的。
類型 | 描述 |
---|---|
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 | 表示每個值都包含一系列相同類型的值。 |
Tuple | 表示每個值都包含不同類型的固定項目數。 包含單一元素的元組相當於其包含的元素。 |
使用者定義型別 | 表示使用者定義型別,由不同類型的已命名和匿名項目所組成。 藉由叫用建構函式來具現化值。 |
作業 | 表示不具決定性的可呼叫檔,此呼叫會採用一個 (可能是元組值的) 輸入引數會傳回一個 (可能是元組值的) 輸出。 作業值的呼叫可能會有副作用,而且即使使用相同的引數叫用,每個呼叫的輸出也可能不同。 |
函數 | 表示具決定性的可呼叫檔,此呼叫會採用一個 (可能是元組值的) 輸入引數會傳回一個 (可能是元組值的) 輸出。 函式值的呼叫不會有副作用,而且在相同的輸入中,輸出一律會相同。 |