+tikzExample1 =
+ ga_copy >>>
+ ga_swap >>>
+ ga_first ga_drop >>>
+ ga_cancell
+
+tikzExample2 =
+ ga_uncancelr >>>
+ ga_first ga_copy >>>
+ ga_swap >>>
+ ga_second (ga_first ga_drop >>>
+ ga_cancell) >>>
+ ga_cancell
+
+oscillator =
+ ga_loopl (ga_first reg >>>
+ xor >>>
+ ga_copy)
+
+oconst :: Int -> Opaque () a
+oconst c = MkOpaque ("{\\large{"++(show c)++"}}") $
+ do x <- freshM
+ return $ GASPortPassthrough PortUnit (PortFree x) (oconst c)
+
+omult :: Opaque (a,a) a
+omult = MkOpaque "{\\large{*}}" $
+ do x <- freshM
+ return $ GASPortPassthrough (PortTensor (PortFree x) (PortFree x)) (PortFree x) omult
+
+main = do let const c = PGArrowD $ GAS_misc $ oconst c
+ let mult = PGArrowD $ GAS_misc omult
+
+ sample5 <- toTikZ $ beautify $ optimize $ unG (Demo.sample5 const mult)
+ putStrLn $ tikz_header ++ sample5 ++ tikz_footer
+ withFile ".build/sample5.tex" WriteMode (\file -> hPutStr file sample5)
+
+ sample1 <- toTikZ $ skelify' tikzExample1
+ --putStrLn $ tikz_header ++ sample1 ++ tikz_footer
+ withFile ".build/sample1.tex" WriteMode (\file -> hPutStr file sample1)
+
+ sample2 <- toTikZ $ skelify' tikzExample2
+ --putStrLn $ tikz_header ++ sample2 ++ tikz_footer
+ withFile ".build/sample2.tex" WriteMode (\file -> hPutStr file sample2)
+
+ sample3 <- toTikZ $ skelify'' oscillator
+ --putStrLn $ tikz_header ++ sample3 ++ tikz_footer
+ withFile ".build/sample3.tex" WriteMode (\file -> hPutStr file sample3)
+
+ sample6 <- toTikZ $ beautify $ optimize $ unG (Demo.sample6 const mult)
+ --putStrLn $ tikz_header ++ sample6 ++ tikz_footer
+ withFile ".build/sample6.tex" WriteMode (\file -> hPutStr file sample6)