1 {-# LANGUAGE ExistentialQuantification #-}
2 {-# LANGUAGE RankNTypes #-}
4 module Symantic.Printer where
6 import Data.Function (($))
7 import Data.String (String)
12 newtype Printer meta a = Printer {unPrinter :: TermAST meta}
13 print :: Printer meta a -> TermAST meta
15 print2 :: String -> Printer meta a1 -> Printer meta a2 -> Printer meta a3
16 print2 n (Printer aT) (Printer bT) = Printer $ BinTree2 (BinTree2 (BinTree0 (TokenTermAtom n)) aT) bT