Sistem Tipe
Dengan fokus untuk algoritma kuantum menjadi lebih ke arah apa yang harus dicapai daripada pada representasi masalah dalam hal struktur data, mengambil perspektif yang lebih fungsional pada desain bahasa adalah pilihan alami. Pada saat yang sama, sistem jenis adalah mekanisme kuat yang dapat digunakan untuk analisis program dan pemeriksaan waktu kompilasi lainnya yang memfasilitasi rumusan kode yang kuat.
Secara keseluruhan, sistem jenis Q# cukup minimalis, dalam arti bahwa tidak ada gagasan eksplisit tentang kelas atau antarmuka karena mungkin digunakan untuk dari bahasa klasik seperti C# atau Java. Kami juga mengambil pendekatan yang agak pragmatis membuat kemajuan inkremental, sehingga konstruksi tertentu belum sepenuhnya terintegrasi ke dalam sistem jenis. Contohnya adalah funktor, yang dapat digunakan dalam ekspresi tetapi belum memiliki representasi dalam sistem jenis. Secara sesuai, mereka saat ini tidak dapat ditetapkan atau diteruskan sebagai argumen, sama seperti halnya untuk jenis yang dapat dipanggil yang diparmetris. Kami berharap untuk membuat kemajuan bertahap dalam memperluas sistem jenis menjadi lebih lengkap, dan menyeimbangkan kebutuhan segera dengan rencana jangka panjang.
Jenis yang Tersedia
Semua jenis dalam Q#yang tidak dapat diubah.
Tipe | Deskripsi |
---|---|
Unit |
Mewakili jenis singleton yang satu-satunya nilainya adalah () . |
Int |
Mewakili bilangan bulat bertanda tangan 64-bit. Nilai berkisar antara -9.223.372.036.854.775.808 hingga 9.223.372.036.854.775.807. |
BigInt |
Mewakili nilai bilangan bulat yang ditandatangani ukuran apa pun. |
Double |
Mewakili angka floating-point 64-bit presisi ganda. Nilai berkisar dari -1,79769313486232e308 hingga 1,79769313486232e308, serta NaN (bukan angka). |
Bool |
Mewakili nilai Boolean. Nilai yang mungkin true atau false . |
String |
Mewakili teks sebagai nilai yang terdiri dari urutan unit kode UTF-16. |
Qubit |
Mewakili pengidentifikasi buram tempat memori kuantum virtual dapat diatasi.
Nilai jenis Qubit dibuat melalui alokasi. |
Result |
Mewakili hasil pengukuran proyektif ke eigenspace operator kuantum dengan eigenvalues ±1. Nilai yang mungkinZero atau One . |
Pauli |
Mewakili matriks Pauli qubit tunggal. Nilai yang mungkin adalah PauliI , PauliX , PauliY , atau PauliZ . |
Range |
Mewakili urutan yang diurutkan dari nilai Int yang sama spasinya.
Nilai dapat mewakili urutan dalam urutan naik atau turun. |
Array | Mewakili nilai yang masing-masing berisi urutan nilai dengan jenis yang sama. |
Tuple | Mewakili nilai yang masing-masing berisi jumlah item tetap dari berbagai jenis. Tuple yang berisi satu elemen setara dengan elemen yang dikandungnya. |
struct |
Mewakili jenis yang ditentukan pengguna terdiri dari item bernama dari berbagai jenis. Nilai dibuat saat mendeklarasikan instans baru. |
Operasi | Mewakili yang tidak dapat dipanggil deterministik yang mengambil satu argumen input (mungkin bernilai tuple) dan mengembalikan satu output (mungkin bernilai tuple). Panggilan ke operasi nilai mungkin memiliki efek samping dan output dapat bervariasi untuk setiap panggilan, bahkan ketika dipanggil dengan argumen yang sama. |
Fungsi | Mewakili deterministik dapat dipanggil yang mengambil satu argumen input (mungkin bernilai tuple) dan mengembalikan satu output (mungkin bernilai tuple). Panggilan ke nilai fungsi tidak memiliki efek samping dan output akan selalu sama mengingat input yang sama. |