Sistem Jenis
Dengan fokus untuk algoritma kuantum yang lebih ke arah apa yang harus dicapai daripada perwakilan masalah dalam hal struktur data, mengambil perspektif yang lebih fungsional pada rancangan bahasa adalah pilihan alami. Pada saat yang sama, sistem jenis adalah mekanisme yang kuat yang dapat dimanfaatkan untuk analisis program dan pemeriksaan waktu kompilasi lainnya yang memfasilitasi perumusan kode yang kuat.
Secara keseluruhan, sistem jenis Q# cukup minimalis, dalam arti bahwa tidak ada gagasan eksplisit tentang kelas atau antarmuka seperti yang mungkin digunakan dari bahasa klasik seperti C# atau Java. Kita juga mengambil pendekatan yang agak pragmatis untuk membuat kemajuan bertahap, sehingga konstruksi tertentu belum sepenuhnya terintegrasi ke dalam sistem jenis. Contohnya adalah fungtor, yang dapat digunakan dalam ekspresi tetapi belum memiliki representasi dalam sistem jenis. Sejalan dengan itu, fungtor saat ini tidak dapat ditetapkan atau disahkan sebagai argumen, mirip seperti halnya untuk jenis callable yang diparameterkan. Kami berharap dapat membuat kemajuan bertahap dalam memperluas sistem jenis menjadi lebih lengkap, dan menyeimbangkan kebutuhan mendesak dengan rencana jangka panjang.
Jenis yang Tersedia
Semua jenis di Q# merupakan imutabel.
Jenis | Deskripsi |
---|---|
Unit |
Mewakili jenis tunggal 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 integer yang ditandatangani dari berbagai ukuran. |
Double |
Mewakili angka titik floating presisi ganda 64-bit. Nilai berkisar antara -1.79769313486232e308 hingga 1.79769313486232e308 serta NaN (bukan nomor). |
Bool |
Mewakili nilai Boolean. Nilai yang mungkin adalah true atau false . |
String |
Mewakili teks sebagai nilai yang berisi urutan unit kode UTF-16. |
Qubit |
Mewakili pengenal buram saat memori kuantum virtual dapat diatasi.
Nilai jenis Qubit dipakai melalui alokasi. |
Result |
Mewakili hasil pengukuran proyektif ke ruang eigen dari operator kuantum dengan nilai eigen ±1.
Nilai yang memungkinkan adalah Zero atau One . |
Pauli |
Mewakili matriks Pauli qubit tunggal.
Nilai yang memungkinkan adalah PauliI , PauliX , PauliY , atau PauliZ . |
Range |
Mewakili urutan yang dipesan dari nilai Int yang sama ruangnya.
Nilai dapat mewakili urutan dalam urutan naik atau turun. |
Larik | Mewakili nilai yang masing-masing berisi urutan nilai dari jenis yang sama. |
Tuple | Mewakili nilai yang masing-masing berisi sejumlah item tetap dari berbagai jenis. Tuple yang berisi satu elemen setara dengan elemen yang dikandungnya. |
Jenis yang ditetapkan pengguna | Mewakili jenis yang ditentukan pengguna yang terdiri dari item bernama dan anonim dari berbagai jenis. Nilai yang digunakan dengan menggunakan konstruktor. |
Operasi | Mewakili callable non-deterministik yang mengambil satu (dapat bernilai tuple) input argumen yang mengembalikan satu (dapat bernilai tuple) output. Panggilan ke nilai operasi mungkin memiliki efek samping dan output dapat bervariasi untuk setiap panggilan bahkan saat dipanggil dengan argumen yang sama. |
Fungsi | Mewakili callable deterministik yang mengambil satu (dapat bernilai tuple) argumen input yang mengembalikan satu (dapat bernilai tuple) output. Panggilan ke nilai fungsi tidak memiliki efek samping dan output akan selalu sama mengingat input yang sama. |