    -- The public face of Template Haskell

    module Language.Haskell.TH(
    	-- The monad and its operations
    	Q, runQ,
    	report,		  -- :: Bool -> String -> Q ()
    	recover, 	  -- :: Q a -> Q a -> Q a
    	reify, 		  -- :: Name -> Q Info
    	location,	  -- :: Q Location
    	runIO, 		  -- :: IO a -> Q a

    	-- Names
    	Name,
    	mkName,  	-- :: String -> Name
    	newName, 	-- :: String -> Q Name
    	nameBase,	-- :: Name -> String
    	nameModule,	-- :: Name -> Maybe String
    	tupleTypeName, tupleDataName,	-- Int -> Name

    	-- The algebraic data types
    	Dec(..), Exp(..), Con(..), Type(..), Cxt, Match(..),
    	Clause(..), Body(..), Guard(..), Stmt(..), Range(..),
    	Lit(..), Pat(..), FieldExp, FieldPat,
    	Strict(..), Foreign(..), Callconv(..), Safety(..), FunDep(..),
    	Info(..), Loc(..),
    	Fixity(..), FixityDirection(..), defaultFixity, maxPrecedence,

    	-- Library functions
    	InfoQ, ExpQ, DecQ, ConQ, TypeQ, CxtQ, MatchQ, ClauseQ, BodyQ, GuardQ,
    	StmtQ, RangeQ, StrictTypeQ, VarStrictTypeQ, PatQ, FieldPatQ,
    	intPrimL, wordPrimL, floatPrimL, doublePrimL, integerL, rationalL,
    	charL, stringL,
    	litP, varP, tupP, conP, infixP, tildeP, asP, wildP, recP, listP, sigP,
    	fieldPat,
    	bindS, letS, noBindS, parS,
    	fromR, fromThenR, fromToR, fromThenToR,
    	normalB, guardedB, normalG, normalGE, patG, patGE, match, clause,
    	dyn, global, varE, conE, litE, appE, infixE, infixApp, sectionL, sectionR,
    	lamE, lam1E, tupE, condE, letE, caseE, doE, compE, arithSeqE, appsE,
    	fromE, fromThenE, fromToE, fromThenToE,
    	listE, sigE, recConE, recUpdE, stringE, fieldExp,
    	valD, funD, tySynD, dataD, newtypeD, classD, instanceD, sigD, forImpD,
    	cxt, normalC, recC, infixC,
    	forallT, varT, conT, appT, arrowT, listT, tupleT,
    	isStrict, notStrict, strictType, varStrictType,
    	cCall, stdCall, unsafe, safe, threadsafe,

    	-- Pretty-printer
    	Ppr(..), pprint, pprExp, pprLit, pprPat, pprParendType

       ) where

    import Language.Haskell.TH.Syntax
    import Language.Haskell.TH.Lib
    import Language.Haskell.TH.Ppr