\begin{code}
module Text.Printf.TH.Types where
import Language.Haskell.TH.Syntax
import Language.Haskell.TH
data Format = Literal String
| Conversion ExpQ
| CharCount
type ArgNum = Integer
type Arg = ExpQ
type Width = ExpQ
type Precision = ExpQ
data Flag = AlternateForm
| ZeroPadded
| LeftAdjust
| BlankPlus
| Plus
| Thousands
| AlternativeDigits
deriving (Eq, Show)
xvar :: ArgNum -> String
xvar i = 'x':show i
yvar :: ArgNum -> String
yvar i = 'y':show i
nvar :: ArgNum -> String
nvar i = 'n':show i
\end{code}