Tür Sistemi
Kuantum algoritmasının veri yapıları açısından 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, sağlam kod formüle etme işlemini kolaylaştıran program analizi ve diğer derleme zamanı denetimleri için kullanılabilecek güçlü bir mekanizmadır.
Sonuç olarak, Q# tür sistemi oldukça minimalisttir, çünkü C# veya Java gibi klasik dillerden kullanılabilecek sınıflar veya arabirimler için açık bir fikir yoktur. Ayrıca, belirli yapıların henüz tür sistemiyle tam olarak tümleştirilmemesi için artımlı ilerleme sağlayan biraz pragmatik bir yaklaşım benimsiyoruz. İfadeler içinde kullanılabilen ancak henüz tür sisteminde bir gösterimi olmayan functor'lar buna örnek olarak verilmiştir. Buna karşılık, parametrized çağrılabilen türlerde olduğu gibi, bunlar şu anda bağımsız değişken olarak atanamaz veya geçirilemez. Tür sisteminin daha eksiksiz olması için genişletmede artımlı ilerlemeler sağlamayı ve acil ihtiyaçları daha uzun vadeli planlarla dengelemeyi bekliyoruz.
Kullanılabilir Türler
içindeki Q# tüm türler sabittir.
Tür | Description |
---|---|
Unit |
Tek değeri () olan tekil türü temsil eder. |
Int |
64 bit işaretli bir tamsayıyı temsil eder. Değerler -9.223.372.036.854.775.808 ile 9.223.372.036.854.775.807 arasında değişir. |
BigInt |
Herhangi bir boyuttaki işaretli 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). |
Bool |
Boole değerlerini temsil eder. Olası değerler: true veya false . |
String |
Metni UTF-16 kod birimlerinden oluşan bir diziden oluşan değerler olarak temsil eder. |
Qubit |
Sanal kuantum belleğinin ele alınabileceği opak bir tanımlayıcıyı temsil eder.
TürQubit değerleri ayırma yoluyla örneği oluşturulur. |
Result |
Eigenvalues ±1 ile kuantum işlecinin eigenspaces üzerinde yansıtıcı ölçümün sonucunu temsil eder. Olası değerler veya One şeklindedirZero . |
Pauli |
Tek kubitli Pauli matrisi temsil eder. Olası değerler , PauliX , PauliY veya PauliZ değerleridirPauliI . |
Range |
Eşit aralıklı Int değerlerin sıralı sırasını temsil eder.
Değerler sıraları artan veya azalan düzende 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. |
Kullanıcı tanımlı tür | Farklı türlerdeki adlandırılmış ve anonim öğelerden oluşan kullanıcı tanımlı bir türü temsil eder. Oluşturucu çağrılarak değerlerin örneği oluşturulur. |
İşlem | Bir (muhtemelen demet değerli) giriş bağımsız değişkeninin bir (muhtemelen demet değerli) çıkış döndürdüğü belirlenimci olmayan çağrılabilen bir değeri temsil eder. İşlem değerlerine yapılan çağrıların yan etkileri olabilir ve çıkış, aynı bağımsız değişkenle çağrıldığında bile her çağrı için farklılık gösterebilir. |
İşlev | Bir (muhtemelen demet değerli) giriş bağımsız değişkeninin bir (muhtemelen demet değerli) çıkış döndürdüğü belirlenimci çağrılabilen bir değeri temsil eder. İşlev değerlerine yapılan çağrıların yan etkileri yoktur ve aynı giriş verildiğinde çıkış her zaman aynı olacaktır. |