template-haskell-2.2.0.0Source codeContentsIndex
Language.Haskell.TH
Synopsis
data Q a
runQ :: Quasi m => Q a -> m a
report :: Bool -> String -> Q ()
recover :: Q a -> Q a -> Q a
reify :: Name -> Q Info
currentModule :: Q String
runIO :: IO a -> Q a
data Name
mkName :: String -> Name
newName :: String -> Q Name
nameBase :: Name -> String
nameModule :: Name -> Maybe String
tupleTypeName :: Int -> Name
tupleDataName :: Int -> Name
data Dec
= FunD Name [Clause]
| ValD Pat Body [Dec]
| DataD Cxt Name [Name] [Con] [Name]
| NewtypeD Cxt Name [Name] Con [Name]
| TySynD Name [Name] Type
| ClassD Cxt Name [Name] [FunDep] [Dec]
| InstanceD Cxt Type [Dec]
| SigD Name Type
| ForeignD Foreign
data Exp
= VarE Name
| ConE Name
| LitE Lit
| AppE Exp Exp
| InfixE (Maybe Exp) Exp (Maybe Exp)
| LamE [Pat] Exp
| TupE [Exp]
| CondE Exp Exp Exp
| LetE [Dec] Exp
| CaseE Exp [Match]
| DoE [Stmt]
| CompE [Stmt]
| ArithSeqE Range
| ListE [Exp]
| SigE Exp Type
| RecConE Name [FieldExp]
| RecUpdE Exp [FieldExp]
data Con
= NormalC Name [StrictType]
| RecC Name [VarStrictType]
| InfixC StrictType Name StrictType
| ForallC [Name] Cxt Con
data Type
= ForallT [Name] Cxt Type
| VarT Name
| ConT Name
| TupleT Int
| ArrowT
| ListT
| AppT Type Type
type Cxt = [Type]
data Match = Match Pat Body [Dec]
data Clause = Clause [Pat] Body [Dec]
data Body
= GuardedB [(Guard, Exp)]
| NormalB Exp
data Guard
= NormalG Exp
| PatG [Stmt]
data Stmt
= BindS Pat Exp
| LetS [Dec]
| NoBindS Exp
| ParS [[Stmt]]
data Range
= FromR Exp
| FromThenR Exp Exp
| FromToR Exp Exp
| FromThenToR Exp Exp Exp
data Lit
= CharL Char
| StringL String
| IntegerL Integer
| RationalL Rational
| IntPrimL Integer
| FloatPrimL Rational
| DoublePrimL Rational
data Pat
= LitP Lit
| VarP Name
| TupP [Pat]
| ConP Name [Pat]
| InfixP Pat Name Pat
| TildeP Pat
| AsP Name Pat
| WildP
| RecP Name [FieldPat]
| ListP [Pat]
| SigP Pat Type
type FieldExp = (Name, Exp)
type FieldPat = (Name, Pat)
data Strict
= IsStrict
| NotStrict
data Foreign
= ImportF Callconv Safety String Name Type
| ExportF Callconv String Name Type
data Callconv
= CCall
| StdCall
data Safety
= Unsafe
| Safe
| Threadsafe
data FunDep = FunDep [Name] [Name]
data Info
= ClassI Dec
| ClassOpI Name Type Name Fixity
| TyConI Dec
| PrimTyConI Name Int Bool
| DataConI Name Type Name Fixity
| VarI Name Type (Maybe Dec) Fixity
| TyVarI Name Type
data Fixity = Fixity Int FixityDirection
data FixityDirection
= InfixL
| InfixR
| InfixN
defaultFixity :: Fixity
maxPrecedence :: Int
type InfoQ = Q Info
type ExpQ = Q Exp
type DecQ = Q Dec
type ConQ = Q Con
type TypeQ = Q Type
type CxtQ = Q Cxt
type MatchQ = Q Match
type ClauseQ = Q Clause
type BodyQ = Q Body
type GuardQ = Q Guard
type StmtQ = Q Stmt
type RangeQ = Q Range
type StrictTypeQ = Q StrictType
type VarStrictTypeQ = Q VarStrictType
type PatQ = Q Pat
type FieldPatQ = Q FieldPat
intPrimL :: Integer -> Lit
floatPrimL :: Rational -> Lit
doublePrimL :: Rational -> Lit
integerL :: Integer -> Lit
charL :: Char -> Lit
stringL :: String -> Lit
rationalL :: Rational -> Lit
litP :: Lit -> PatQ
varP :: Name -> PatQ
tupP :: [PatQ] -> PatQ
conP :: Name -> [PatQ] -> PatQ
infixP :: PatQ -> Name -> PatQ -> PatQ
tildeP :: PatQ -> PatQ
asP :: Name -> PatQ -> PatQ
wildP :: PatQ
recP :: Name -> [FieldPatQ] -> PatQ
listP :: [PatQ] -> PatQ
sigP :: PatQ -> TypeQ -> PatQ
fieldPat :: Name -> PatQ -> FieldPatQ
bindS :: PatQ -> ExpQ -> StmtQ
letS :: [DecQ] -> StmtQ
noBindS :: ExpQ -> StmtQ
parS :: [[StmtQ]] -> StmtQ
fromR :: ExpQ -> RangeQ
fromThenR :: ExpQ -> ExpQ -> RangeQ
fromToR :: ExpQ -> ExpQ -> RangeQ
fromThenToR :: ExpQ -> ExpQ -> ExpQ -> RangeQ
normalB :: ExpQ -> BodyQ
guardedB :: [Q (Guard, Exp)] -> BodyQ
normalG :: ExpQ -> GuardQ
normalGE :: ExpQ -> ExpQ -> Q (Guard, Exp)
patG :: [StmtQ] -> GuardQ
patGE :: [StmtQ] -> ExpQ -> Q (Guard, Exp)
match :: PatQ -> BodyQ -> [DecQ] -> MatchQ
clause :: [PatQ] -> BodyQ -> [DecQ] -> ClauseQ
dyn :: String -> Q Exp
global :: Name -> ExpQ
varE :: Name -> ExpQ
conE :: Name -> ExpQ
litE :: Lit -> ExpQ
appE :: ExpQ -> ExpQ -> ExpQ
infixE :: Maybe ExpQ -> ExpQ -> Maybe ExpQ -> ExpQ
infixApp :: ExpQ -> ExpQ -> ExpQ -> ExpQ
sectionL :: ExpQ -> ExpQ -> ExpQ
sectionR :: ExpQ -> ExpQ -> ExpQ
lamE :: [PatQ] -> ExpQ -> ExpQ
lam1E :: PatQ -> ExpQ -> ExpQ
tupE :: [ExpQ] -> ExpQ
condE :: ExpQ -> ExpQ -> ExpQ -> ExpQ
letE :: [DecQ] -> ExpQ -> ExpQ
caseE :: ExpQ -> [MatchQ] -> ExpQ
doE :: [StmtQ] -> ExpQ
compE :: [StmtQ] -> ExpQ
arithSeqE :: RangeQ -> ExpQ
appsE :: [ExpQ] -> ExpQ
fromE :: ExpQ -> ExpQ
fromThenE :: ExpQ -> ExpQ -> ExpQ
fromToE :: ExpQ -> ExpQ -> ExpQ
fromThenToE :: ExpQ -> ExpQ -> ExpQ -> ExpQ
listE :: [ExpQ] -> ExpQ
sigE :: ExpQ -> TypeQ -> ExpQ
recConE :: Name -> [Q (Name, Exp)] -> ExpQ
recUpdE :: ExpQ -> [Q (Name, Exp)] -> ExpQ
stringE :: String -> ExpQ
fieldExp :: Name -> ExpQ -> Q (Name, Exp)
valD :: PatQ -> BodyQ -> [DecQ] -> DecQ
funD :: Name -> [ClauseQ] -> DecQ
tySynD :: Name -> [Name] -> TypeQ -> DecQ
dataD :: CxtQ -> Name -> [Name] -> [ConQ] -> [Name] -> DecQ
newtypeD :: CxtQ -> Name -> [Name] -> ConQ -> [Name] -> DecQ
classD :: CxtQ -> Name -> [Name] -> [FunDep] -> [DecQ] -> DecQ
instanceD :: CxtQ -> TypeQ -> [DecQ] -> DecQ
sigD :: Name -> TypeQ -> DecQ
forImpD :: Callconv -> Safety -> String -> Name -> TypeQ -> DecQ
cxt :: [TypeQ] -> CxtQ
normalC :: Name -> [StrictTypeQ] -> ConQ
recC :: Name -> [VarStrictTypeQ] -> ConQ
infixC :: Q (Strict, Type) -> Name -> Q (Strict, Type) -> ConQ
forallT :: [Name] -> CxtQ -> TypeQ -> TypeQ
varT :: Name -> TypeQ
conT :: Name -> TypeQ
appT :: TypeQ -> TypeQ -> TypeQ
arrowT :: TypeQ
listT :: TypeQ
tupleT :: Int -> TypeQ
isStrict :: Q Strict
notStrict :: Q Strict
strictType :: Q Strict -> TypeQ -> StrictTypeQ
varStrictType :: Name -> StrictTypeQ -> VarStrictTypeQ
cCall :: Callconv
stdCall :: Callconv
unsafe :: Safety
safe :: Safety
threadsafe :: Safety
class Ppr a where
ppr :: a -> Doc
ppr_list :: [a] -> Doc
pprint :: Ppr a => a -> String
pprExp :: Precedence -> Exp -> Doc
pprLit :: Precedence -> Lit -> Doc
pprPat :: Precedence -> Pat -> Doc
pprParendType :: Type -> Doc
Documentation
data Q aSource
show/hide Instances
runQ :: Quasi m => Q a -> m aSource
report :: Bool -> String -> Q ()Source
recover :: Q a -> Q a -> Q aSource
reify :: Name -> Q InfoSource
reify looks up information about the Name
currentModule :: Q StringSource
currentModule gives you the name of the module in which this computation is spliced.
runIO :: IO a -> Q aSource

The runIO function lets you run an I/O computation in the Q monad. Take care: you are guaranteed the ordering of calls to runIO within a single Q computation, but not about the order in which splices are run.

Note: for various murky reasons, stdout and stderr handles are not necesarily flushed when the compiler finishes running, so you should flush them yourself.

data Name Source
show/hide Instances
mkName :: String -> NameSource
newName :: String -> Q NameSource
nameBase :: Name -> StringSource
nameModule :: Name -> Maybe StringSource
tupleTypeName :: Int -> NameSource
tupleDataName :: Int -> NameSource
data Dec Source
Constructors
FunD Name [Clause]
ValD Pat Body [Dec]
DataD Cxt Name [Name] [Con] [Name]
NewtypeD Cxt Name [Name] Con [Name]
TySynD Name [Name] Type
ClassD Cxt Name [Name] [FunDep] [Dec]
InstanceD Cxt Type [Dec]
SigD Name Type
ForeignD Foreign
show/hide Instances
data Exp Source
Constructors
VarE Name
ConE Name
LitE Lit
AppE Exp Exp
InfixE (Maybe Exp) Exp (Maybe Exp)
LamE [Pat] Exp
TupE [Exp]
CondE Exp Exp Exp
LetE [Dec] Exp
CaseE Exp [Match]
DoE [Stmt]
CompE [Stmt]
ArithSeqE Range
ListE [Exp]
SigE Exp Type
RecConE Name [FieldExp]
RecUpdE Exp [FieldExp]
show/hide Instances
data Con Source
Constructors
NormalC Name [StrictType]
RecC Name [VarStrictType]
InfixC StrictType Name StrictType
ForallC [Name] Cxt Con
show/hide Instances
data Type Source
Constructors
ForallT [Name] Cxt Type
VarT Name
ConT Name
TupleT Int
ArrowT
ListT
AppT Type Type
show/hide Instances
type Cxt = [Type]Source
data Match Source
Constructors
Match Pat Body [Dec]
show/hide Instances
data Clause Source
Constructors
Clause [Pat] Body [Dec]
show/hide Instances
data Body Source
Constructors
GuardedB [(Guard, Exp)]
NormalB Exp
show/hide Instances
data Guard Source
Constructors
NormalG Exp
PatG [Stmt]
show/hide Instances
data Stmt Source
Constructors
BindS Pat Exp
LetS [Dec]
NoBindS Exp
ParS [[Stmt]]
show/hide Instances
data Range Source
Constructors
FromR Exp
FromThenR Exp Exp
FromToR Exp Exp
FromThenToR Exp Exp Exp
show/hide Instances
data Lit Source
Constructors
CharL Char
StringL String
IntegerL Integer
RationalL Rational
IntPrimL Integer
FloatPrimL Rational
DoublePrimL Rational
show/hide Instances
data Pat Source
Constructors
LitP Lit
VarP Name
TupP [Pat]
ConP Name [Pat]
InfixP Pat Name Pat
TildeP Pat
AsP Name Pat
WildP
RecP Name [FieldPat]
ListP [Pat]
SigP Pat Type
show/hide Instances
type FieldExp = (Name, Exp)Source
type FieldPat = (Name, Pat)Source
data Strict Source
Constructors
IsStrict
NotStrict
show/hide Instances
data Foreign Source
Constructors
ImportF Callconv Safety String Name Type
ExportF Callconv String Name Type
show/hide Instances
data Callconv Source
Constructors
CCall
StdCall
show/hide Instances
data Safety Source
Constructors
Unsafe
Safe
Threadsafe
show/hide Instances
data FunDep Source
Constructors
FunDep [Name] [Name]
show/hide Instances
data Info Source
Constructors
ClassI Dec
ClassOpI Name Type Name Fixity
TyConI Dec
PrimTyConI Name Int Bool
DataConI Name Type Name Fixity
VarI Name Type (Maybe Dec) Fixity
TyVarI Name Type
show/hide Instances
data Fixity Source
Constructors
Fixity Int FixityDirection
show/hide Instances
data FixityDirection Source
Constructors
InfixL
InfixR
InfixN
show/hide Instances
defaultFixity :: FixitySource
maxPrecedence :: IntSource
type InfoQ = Q InfoSource
type ExpQ = Q ExpSource
type DecQ = Q DecSource
type ConQ = Q ConSource
type TypeQ = Q TypeSource
type CxtQ = Q CxtSource
type MatchQ = Q MatchSource
type ClauseQ = Q ClauseSource
type BodyQ = Q BodySource
type GuardQ = Q GuardSource
type StmtQ = Q StmtSource
type RangeQ = Q RangeSource
type StrictTypeQ = Q StrictTypeSource
type VarStrictTypeQ = Q VarStrictTypeSource
type PatQ = Q PatSource
type FieldPatQ = Q FieldPatSource
intPrimL :: Integer -> LitSource
floatPrimL :: Rational -> LitSource
doublePrimL :: Rational -> LitSource
integerL :: Integer -> LitSource
charL :: Char -> LitSource
stringL :: String -> LitSource
rationalL :: Rational -> LitSource
litP :: Lit -> PatQSource
varP :: Name -> PatQSource
tupP :: [PatQ] -> PatQSource
conP :: Name -> [PatQ] -> PatQSource
infixP :: PatQ -> Name -> PatQ -> PatQSource
tildeP :: PatQ -> PatQSource
asP :: Name -> PatQ -> PatQSource
wildP :: PatQSource
recP :: Name -> [FieldPatQ] -> PatQSource
listP :: [PatQ] -> PatQSource
sigP :: PatQ -> TypeQ -> PatQSource
fieldPat :: Name -> PatQ -> FieldPatQSource
bindS :: PatQ -> ExpQ -> StmtQSource
letS :: [DecQ] -> StmtQSource
noBindS :: ExpQ -> StmtQSource
parS :: [[StmtQ]] -> StmtQSource
fromR :: ExpQ -> RangeQSource
fromThenR :: ExpQ -> ExpQ -> RangeQSource
fromToR :: ExpQ -> ExpQ -> RangeQSource
fromThenToR :: ExpQ -> ExpQ -> ExpQ -> RangeQSource
normalB :: ExpQ -> BodyQSource
guardedB :: [Q (Guard, Exp)] -> BodyQSource
normalG :: ExpQ -> GuardQSource
normalGE :: ExpQ -> ExpQ -> Q (Guard, Exp)Source
patG :: [StmtQ] -> GuardQSource
patGE :: [StmtQ] -> ExpQ -> Q (Guard, Exp)Source
match :: PatQ -> BodyQ -> [DecQ] -> MatchQSource
clause :: [PatQ] -> BodyQ -> [DecQ] -> ClauseQSource
dyn :: String -> Q ExpSource
global :: Name -> ExpQSource
varE :: Name -> ExpQSource
conE :: Name -> ExpQSource
litE :: Lit -> ExpQSource
appE :: ExpQ -> ExpQ -> ExpQSource
infixE :: Maybe ExpQ -> ExpQ -> Maybe ExpQ -> ExpQSource
infixApp :: ExpQ -> ExpQ -> ExpQ -> ExpQSource
sectionL :: ExpQ -> ExpQ -> ExpQSource
sectionR :: ExpQ -> ExpQ -> ExpQSource
lamE :: [PatQ] -> ExpQ -> ExpQSource
lam1E :: PatQ -> ExpQ -> ExpQSource
tupE :: [ExpQ] -> ExpQSource
condE :: ExpQ -> ExpQ -> ExpQ -> ExpQSource
letE :: [DecQ] -> ExpQ -> ExpQSource
caseE :: ExpQ -> [MatchQ] -> ExpQSource
doE :: [StmtQ] -> ExpQSource
compE :: [StmtQ] -> ExpQSource
arithSeqE :: RangeQ -> ExpQSource
appsE :: [ExpQ] -> ExpQSource
fromE :: ExpQ -> ExpQSource
fromThenE :: ExpQ -> ExpQ -> ExpQSource
fromToE :: ExpQ -> ExpQ -> ExpQSource
fromThenToE :: ExpQ -> ExpQ -> ExpQ -> ExpQSource
listE :: [ExpQ] -> ExpQSource
sigE :: ExpQ -> TypeQ -> ExpQSource
recConE :: Name -> [Q (Name, Exp)] -> ExpQSource
recUpdE :: ExpQ -> [Q (Name, Exp)] -> ExpQSource
stringE :: String -> ExpQSource
fieldExp :: Name -> ExpQ -> Q (Name, Exp)Source
valD :: PatQ -> BodyQ -> [DecQ] -> DecQSource
funD :: Name -> [ClauseQ] -> DecQSource
tySynD :: Name -> [Name] -> TypeQ -> DecQSource
dataD :: CxtQ -> Name -> [Name] -> [ConQ] -> [Name] -> DecQSource
newtypeD :: CxtQ -> Name -> [Name] -> ConQ -> [Name] -> DecQSource
classD :: CxtQ -> Name -> [Name] -> [FunDep] -> [DecQ] -> DecQSource
instanceD :: CxtQ -> TypeQ -> [DecQ] -> DecQSource
sigD :: Name -> TypeQ -> DecQSource
forImpD :: Callconv -> Safety -> String -> Name -> TypeQ -> DecQSource
cxt :: [TypeQ] -> CxtQSource
normalC :: Name -> [StrictTypeQ] -> ConQSource
recC :: Name -> [VarStrictTypeQ] -> ConQSource
infixC :: Q (Strict, Type) -> Name -> Q (Strict, Type) -> ConQSource
forallT :: [Name] -> CxtQ -> TypeQ -> TypeQSource
varT :: Name -> TypeQSource
conT :: Name -> TypeQSource
appT :: TypeQ -> TypeQ -> TypeQSource
arrowT :: TypeQSource
listT :: TypeQSource
tupleT :: Int -> TypeQSource
isStrict :: Q StrictSource
notStrict :: Q StrictSource
strictType :: Q Strict -> TypeQ -> StrictTypeQSource
varStrictType :: Name -> StrictTypeQ -> VarStrictTypeQSource
cCall :: CallconvSource
stdCall :: CallconvSource
unsafe :: SafetySource
safe :: SafetySource
threadsafe :: SafetySource
class Ppr a whereSource
Methods
ppr :: a -> DocSource
ppr_list :: [a] -> DocSource
show/hide Instances
pprint :: Ppr a => a -> StringSource
pprExp :: Precedence -> Exp -> DocSource
pprLit :: Precedence -> Lit -> DocSource
pprPat :: Precedence -> Pat -> DocSource
pprParendType :: Type -> DocSource
Produced by Haddock version 0.9