quipper-demos-0.9.0.0: Quipper/Demos/NamedGate.hs
import Quipper hiding (gate_V)
my_unary_gate :: Qubit -> Circ Qubit
my_unary_gate = named_gate "Q"
my_binary_gate :: (Qubit, Qubit) -> Circ (Qubit, Qubit)
my_binary_gate = named_gate "R"
my_unary_gate_at :: Qubit -> Circ ()
my_unary_gate_at = named_gate_at "Q"
my_binary_gate_at :: (Qubit, Qubit) -> Circ ()
my_binary_gate_at = named_gate_at "R"
gate_V :: Qubit -> Circ Qubit
gate_V = named_gate "V"
circuit :: Qubit -> Qubit -> Circ (Qubit, Qubit)
circuit a b = do
a <- gate_V a
(c,d) <- my_binary_gate (a,b)
c <- my_unary_gate a `controlled` d
my_binary_gate_at (c, d)
my_binary_gate_at (d, c)
my_unary_gate_at d
c <- gate_V c
d <- gate_V d
return (c,d)
main = print_simple Preview circuit