Rendszer beírása
Mivel a kvantumalgoritmus inkább az elvégzendő célokra összpontosít, mint az adatstruktúrák problémamegjelenítésére, természetes választás a nyelvtervezés funkcionálisabb szempontjainak figyelembe vétele. Ugyanakkor a típusrendszer egy hatékony mechanizmus, amely felhasználható a programelemzéshez és más fordítási időre vonatkozó ellenőrzésekhez, amelyek megkönnyítik a hatékony kód kialakítását.
Mindent egybevetve, a Q# típusrendszer meglehetősen minimalista, abban az értelemben, hogy nincs explicit fogalma osztályok vagy felületek, mint az egyik lehet használni a klasszikus nyelvek, mint a C# vagy a Java. Némi pragmatikus megközelítést is alkalmazunk, amely növekményes előrehaladást tesz lehetővé, így bizonyos szerkezetek még nincsenek teljesen integrálva a típusrendszerbe. Ilyenek például a funktorok, amelyek használhatók kifejezésekben, de még nem rendelkeznek reprezentációval a típusrendszerben. Ennek megfelelően jelenleg nem rendelhetők hozzá és nem adhatóak át argumentumként, hasonlóan ahhoz, mint a paraméteres hívható típus esetében. Várhatóan növekményes előrehaladást értünk el a típusrendszer teljesebb körű kiterjesztésében, és kiegyensúlyozzuk az azonnali igényeket a hosszabb távú tervekkel.
Elérhető típusok
Minden típus Q#nem módosítható.
Típus | Leírás |
---|---|
Unit |
Egyetlen olyan típust jelöl, amelynek az egyetlen értéke .() |
Int |
64 bites aláírt egész számot jelöl. Az értékek -9 223 372 036 854 775 808 és 9 223 372 036 854 775 807 között mozognak. |
BigInt |
Tetszőleges méretű aláírt egész számértékeket jelöl. |
Double |
Dupla pontosságú, 64 bites lebegőpontos számot jelöl. Az értékek -1,79769313486232e308 és 1,79769313486232e308 között, valamint NaN (nem szám). |
Bool |
Logikai értékeket jelöl. A lehetséges értékek: true és false . |
String |
A szöveget UTF-16 kódegységek sorozatából álló értékekként jelöli. |
Qubit |
Egy átlátszatlan azonosítót jelöl, amellyel a virtuális kvantummemória kezelhető.
A típusértékekQubit példányosítása foglalással történhet. |
Result |
Egy eigenvalues ±1 jellel rendelkező kvantumoperátor eigentereibe történő kivetítő mérés eredményét jelöli. Lehetséges értékek vagy Zero One . |
Pauli |
Egy qubites Pauli-mátrixot jelöl. A lehetséges értékek a következők: PauliI , PauliX vagy PauliY PauliZ . |
Range |
Egyenlő távolságú Int értékek rendezett sorozatát jelöli.
Az értékek növekvő vagy csökkenő sorrendben jelölhetik a sorozatokat. |
Tömb | Azokat az értékeket jelöli, amelyek mindegyike azonos típusú értéksorozatot tartalmaz. |
Rekord | Azokat az értékeket jelöli, amelyek mindegyike rögzített számú különböző típusú elemet tartalmaz. Az egyetlen elemet tartalmazó tuplesek egyenértékűek az általuk tartalmazott elemmel. |
Felhasználó által megadott típus | Egy felhasználó által definiált típust jelöl, amely különböző típusú névvel ellátott és névtelen elemekből áll. Az értékeket a konstruktor meghívásával példányosítjuk. |
Művelet | Egy nem determinisztikus meghívható értéket jelöl, amely egy (esetleg rekordértékű) bemeneti argumentumot ad vissza egy (esetleg rekordértékű) kimenettel. A műveletértékek hívásainak mellékhatásai lehetnek, és a kimenet minden hívásnál eltérő lehet, még akkor is, ha ugyanazzal az argumentummal hívják meg. |
Függvény | Egy determinisztikus hívható értéket jelöl, amely egy (esetleg rekordértékű) bemeneti argumentumot vesz igénybe, és egy (esetleg rekordértékű) kimenetet ad vissza. A függvényértékek meghívásának nincsenek mellékhatásai, és a kimenet mindig ugyanaz lesz, ha ugyanazt a bemenetet adja meg. |