{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeFamilies #-}
{-# LINE 1 "Quipper/Demos/Arith.hs" #-}
import Quipper
import Quipper.Libraries.Arith

main :: IO ()
main = print_generic Preview labelled_add (qdint_shape 3) (qdint_shape 3)


labelled_add :: QDInt -> QDInt -> Circ (QDInt, QDInt,QDInt)
labelled_add x y = do
  label (x,y) ("x","y")
  xy <- q_add x y
  label xy ("x","y","x+y")
  return xy