Computación cuántica con Sounio
Sounio obliga el teorema de no clonar de la mecánica cuántica en el tiempo de compilación a través de los tipos lineales: un Qubit es un recurso lineal que debe ser consumido exactamente una vez. Intentar copiarlo produce un error de compilación.
Tipos lineales para estados cuánticos
// Un Qubit no puede ser clonado.
// las estaciones estándar de cuántico (H, X, Y, Z, CNOT) consumen y devuelven Qubits.
fn apply_hadamard(q: Qubit) -> Qubit {
// aplicar la puerta H ...
}
struct QubitPair { fst: Qubit, snd: Qubit }
fn apply_cnot_pair(control: Qubit, target: Qubit) -> QubitPair {
// aplicar la puerta 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
}