Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vzhledem k tomu, že se zaměřujeme na kvantové algoritmy, které by se měly dosáhnout spíše než na reprezentaci problému z hlediska datových struktur, je přirozenější pohled na návrh jazyka. Systém typů je zároveň výkonný mechanismus, který lze použít pro analýzu programu a další kontroly v době kompilace, které usnadňují formulaci robustního kódu.
Celkově je systém typů Q# poměrně minimalistický, v tom smyslu, že neexistuje explicitní pojem tříd nebo rozhraní, protože se dá použít z klasických jazyků, jako je C# nebo Java. Bereme také poněkud pragmatičtější přístup k postupnému pokroku, takže některé konstrukce ještě nejsou plně integrované do systému typů. Příkladem jsou funktory, které lze použít ve výrazech, ale zatím nemají reprezentaci v systému typů. Odpovídajícím způsobem není možné je v současné době přiřadit ani předat jako argumenty, podobně jako u parametrizovaných volatelných typů. Očekáváme, že přírůstkový pokrok při rozšiřování systému typů bude dokončenější a vyrovnáváme okamžité potřeby s dlouhodobějšími plány.
Dostupné typy
Všechny typy v Q# jsou neměnné.
| Typ | Popis |
|---|---|
Unit |
Představuje typ singleton, jehož jedinou hodnotou je (). |
Int |
Představuje 64bitové celé číslo se signedm. hodnot rozsah od -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807. |
BigInt |
Představuje celé číslo signed inte hodnoty libovolné velikosti. |
Double |
Představuje 64bitové číslo s plovoucí desetinnou čárkou s dvojitou přesností. hodnoty jsou v rozsahu -1,79769313486232e308 až 1,79769313486232e308 a také NaN (ne číslo). |
Bool |
Představuje logické hodnoty. Možné hodnoty jsou true nebo false. |
String |
Představuje text jako hodnoty, které se skládají ze sekvence jednotek kódu UTF-16. |
Qubit |
Představuje neprůsaný identifikátor, pomocí kterého lze řešit virtuální kvantovou paměť.
hodnoty typu Qubit se vytvoří instance prostřednictvím přidělení. |
Result |
Představuje výsledek projektového měření na eigenspaces kvantového operátoru s eigenvalues ±1. Možné hodnoty jsou Zero nebo One. |
Pauli |
Představuje matici Pauli s jedním qubitem. Možné hodnoty jsou PauliI, PauliX, PauliYnebo PauliZ. |
Range |
Představuje seřazenou sekvenci rovnoměrně rozmístěných hodnot Int.
hodnoty mohou představovat sekvence ve vzestupném nebo sestupném pořadí. |
| Pole | Představuje hodnoty, které každý obsahuje posloupnost hodnot stejného typu. |
| Tuple | Představuje hodnoty, které každý obsahuje pevný počet položek různých typů. Řazené kolekce členů obsahující jeden prvek jsou ekvivalentní elementu, který obsahují. |
struct |
Představuje uživatelem definovaný typ sestávající z pojmenovaných položek různých typů. hodnoty se vytvoří instance při deklarování nové instance. |
| Operace | Představuje ne deterministický volatelný, který přebírá jeden (pravděpodobně řazený) vstupní argument řazené kolekce členů a vrací jeden (pravděpodobně řazený) výstup. Volání operací hodnoty můžou mít vedlejší účinky a výstup se může pro každé volání lišit, i když je vyvolán se stejným argumentem. |
| Funkce | Představuje deterministický volatelný, který přebírá jeden (pravděpodobně řazený) vstupní argument řazené kolekce členů a vrací jeden (pravděpodobně řazený) výstup. Volání funkcí hodnoty nemají vedlejší účinky a výstup bude vždy stejný vzhledem ke stejnému vstupu. |