Bagikan melalui


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.