quipper-demos-0.9.0.0: Quipper/Demos/NBox.hs
import Quipper
import Quipper.Libraries.Unboxing
rep :: Integer
rep = 3
myfunc :: (Qubit, Qubit) -> Circ (Qubit, Qubit)
myfunc (a,b) = do
hadamard_at a `controlled` b
return (b,a)
circuit :: (Qubit, Qubit, Qubit, Qubit, Qubit, Qubit) -> Circ (Qubit, Qubit, Qubit, Qubit, Qubit, Qubit)
circuit (a,b,c,d,e,f) = do
label (a,b,c,d,e,f) ("a","b","c","d","e","f")
(a,b) <- loopM rep (a,b) myfunc
(c,d) <- box_loopM "box1" rep (c,d) myfunc
(e,f) <- unbox (\x -> box_loopM "box1" rep x myfunc) (e,f)
label (a,b,c,d,e,f) ("a","b","c","d","e","f")
return (a,b,c,d,e,f)
main =
print_simple Preview circuit