型別系統

由於量子演算法的重點在於要達成的目標,而不是根據資料結構的問題表示法,在語言設計方面更有功能性的觀點是很自然的選擇。 同時,類型系統是一種功能強大的機制,可用於進行程式分析和其他編譯時間檢查,以促進編寫穩固的程式碼。

最重要的是,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 表示布林。 可能的值為 truefalse
String 以一連串 UTF-16 字碼單位所組成的表示文字。
Qubit 表示可以定址虛擬量子記憶體的不透明識別碼。 類型 Qubit會透過配置來具現化。
Result 表示投射測量的結果,其為特徵值 ±1 量子運算子的特徵空間。 可能的ZeroOne
Pauli 表示單一量子位元的 Pauli 矩陣。 可能的PauliIPauliXPauliYPauliZ
Range 表示平均間距 Int 值的排序序列。 可能表示遞增或遞減順序的序列。
Array 表示每個都包含一系列相同類型的值。
Tuple 表示每個都包含不同類型的固定項目數。 包含單一元素的元組相當於其包含的元素。
使用者定義型別 表示使用者定義型別,由不同類型的已命名和匿名項目所組成。 藉由叫用建構函式來具現化
作業 表示不具決定性的可呼叫檔,此呼叫會採用一個 (可能是元組值的) 輸入引數會傳回一個 (可能是元組值的) 輸出。 作業的呼叫可能會有副作用,而且即使使用相同的引數叫用,每個呼叫的輸出也可能不同。
函數 表示具決定性的可呼叫檔,此呼叫會採用一個 (可能是元組值的) 輸入引數會傳回一個 (可能是元組值的) 輸出。 函式的呼叫不會有副作用,而且在相同的輸入中,輸出一律會相同。