量子計算でのSounio
Sounioは、量子力学的「複製禁止定理」をコンパイル時に実行させることにより、線形型を介して実行されます。Qubitは、正確に一度だけ消費される必要がある線形リソースです。コピーを試みるとコンパイルエラーが発生します。
量子状態のモデリングによる線形型
// Qubitは複製できません。
// 標準的な量子ゲート(H, X, Y, Z, CNOT)はQubitを消費し、返します。
fn apply_hadamard(q: Qubit) -> Qubit {
// Hゲートを適用 ...
}
struct QubitPair { fst: Qubit, snd: Qubit }
fn apply_cnot_pair(control: Qubit, target: Qubit) -> QubitPair {
// CNOTゲートを適用 ...
}
fn bell_state() -> QubitPair {
let q1 = allocate_qubit()
let q2 = allocate_qubit()
let h1 = apply_hadamard(q1)
let pair = apply_cnot_pair(h1, q2)
pair
}