\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          -- "0"
          | LeftAdjust          -- "-"
          | BlankPlus           -- " "
          | Plus                -- "+"
          | Thousands           -- "'"
          | AlternativeDigits   -- "I" (ignored)
    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}