Tip Sistemi

Kuantum algoritmasının veri yapıları açısından bir sorun gösterimi yerine elde edilmesi gerekenlere odaklanması nedeniyle dil tasarımına daha işlevsel bir bakış açısı getirmek doğal bir seçimdir. Aynı zamanda tür sistemi, güçlü kodun formülesini kolaylaştıran program analizi ve diğer derleme zamanı denetimleri için kullanılabilecek güçlü bir mekanizmadır.

Genel olarak, Q# türü sistemi oldukça minimalisttir, C# veya Java gibi klasik dillerden kullanılabileceğini gibi açıkça sınıflar veya arabirimler belirtilmemiştir. Ayrıca, belirli yapıların henüz tür sistemiyle tam olarak tümleştirilmemiş olması için artımlı ilerleme kaydeden biraz pragmatik bir yaklaşım benimsiyoruz. Buna örnek olarak ifadeler içinde kullanılabilen ancak henüz tür sisteminde temsili olmayan functor'lar örnek olarak verilmiştir. Buna karşılık, şu anda bağımsız değişken olarak atanamaz veya geçirilemezler. Benzer şekilde, parametrized çağrılabilenler türü için de geçerlidir. Tür sisteminin daha eksiksiz bir şekilde genişletilmesinde artımlı ilerlemeler sağlamayı ve acil ihtiyaçları daha uzun vadeli planlarla dengelemeyi bekliyoruz.

Kullanılabilir Türler

Q#'deki tüm türler sabit .

Türü Açıklama
Unit Tek değeri ()olan tekil bir türü temsil eder.
Int 64 bit imzalı tamsayıyı temsil eder. Değerleri -9.223.372.036.854.775.808 ile 9.223.372.036.854.775.807 arasındadır.
BigInt herhangi bir boyuttaki imzalı tamsayı değerlerini temsil eder.
Double Çift duyarlıklı 64 bit kayan noktalı bir sayıyı temsil eder. Değerler -1,79769313486232e308 ile 1,79769313486232e308 arasında ve NaN (sayı değil) aralığındadır.
Bool Booledeğerlerini temsil eder. Olası değerler true veya false.
String Metni UTF-16 kod birimlerinden oluşan değerleri olarak temsil eder.
Qubit Sanal kuantum belleğinin ele alınabileceği opak bir tanımlayıcıyı temsil eder. Qubit türü değerleri ayırma yoluyla oluşturulur.
Result eigenvalues ±1 ile kuantum işlecinin eigenspaces üzerinde yansıtıcı ölçümün sonucunu temsil eder. olası değerleri Zero veya One.
Pauli Tek kubitli Pauli matrisi temsil eder. Olası değerleriPauliI, PauliX, PauliYveya PauliZ.
Range Eşit aralıklı Int değerlerinden oluşan sıralı bir diziyi temsil eder. Değerler sıraları artan veya azalan sırada temsil edebilir.
Dizi Her biri aynı türde bir değer dizisi içeren değerleri temsil eder.
Tuple Her biri farklı türlerdeki sabit sayıda öğe içeren değerleri temsil eder. Tek bir öğe içeren demetler, içerdikleri öğeye eşdeğerdir.
struct Farklı türlerdeki adlandırılmış öğelerden oluşan kullanıcı tanımlı türü temsil eder. yeni bir örnek bildirilirken Değerler örneği oluşturulur.
Operasyon Bir (büyük olasılıkla tanımlama grubu değerli) giriş bağımsız değişkeni alan ve bir (büyük olasılıkla tanımlama grubu değerli) çıkış döndüren belirlenimci olmayan çağrılabilen bir temsil eder. işlem değerlerine yapılan çağrıların yan etkileri olabilir ve aynı bağımsız değişkenle çağrılsa bile her çağrı için çıkış farklılık gösterebilir.
İşlev Bir (büyük olasılıkla tanımlama grubu değerli) giriş bağımsız değişkeni alan ve bir (büyük olasılıkla tanımlama grubu değerli) çıkış döndüren belirlenimci çağrılabilen temsil eder. işlev değerlerine yönelik çağrıların yan etkileri yoktur ve aynı girişte çıkış her zaman aynı olacaktır.