template-haskell-2.2.0.0ContentsIndex
Language.Haskell.TH.Syntax
Portabilityportable
Stabilityexperimental
Maintainerlibraries@haskell.org
Description
Abstract syntax definitions for Template Haskell.
Synopsis
class (Monad m, Functor m) => Quasi m where
qNewName :: String -> m Name
qReport :: Bool -> String -> m ()
qRecover :: m a -> m a -> m a
qReify :: Name -> m Info
qCurrentModule :: m String
qRunIO :: IO a -> m a
class Lift t where
lift :: t -> Q Exp
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 = Name OccName NameFlavour
mkName :: String -> Name
newName :: String -> Q Name
nameBase :: Name -> String
nameModule :: Name -> Maybe String
showName :: Name -> String
showName' :: NameIs -> Name -> String
data NameIs
= Alone
| Applied
| Infix
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
type StrictType = (Strict, Type)
type VarStrictType = (Name, Strict, Type)
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
returnQ :: a -> Q a
bindQ :: Q a -> (a -> Q b) -> Q b
sequenceQ :: [Q a] -> Q [a]
data NameFlavour
= NameS
| NameQ ModName
| NameU Int#
| NameL Int#
| NameG NameSpace PkgName ModName
data NameSpace
= VarName
| DataName
| TcClsName
mkNameG_v :: String -> String -> String -> Name
mkNameG_d :: String -> String -> String -> Name
mkNameG_tc :: String -> String -> String -> Name
type Uniq = Int
mkNameL :: String -> Uniq -> Name
mkNameU :: String -> Uniq -> Name
tupleTypeName :: Int -> Name
tupleDataName :: Int -> Name
type OccName = PackedString
mkOccName :: String -> OccName
occString :: OccName -> String
type ModName = PackedString
mkModName :: String -> ModName
modString :: ModName -> String
type PkgName = PackedString
mkPkgName :: String -> PkgName
pkgString :: PkgName -> String
Documentation
class (Monad m, Functor m) => Quasi m where
Methods
qNewName :: String -> m Name
qReport :: Bool -> String -> m ()
qRecover :: m a -> m a -> m a
qReify :: Name -> m Info
qCurrentModule :: m String
qRunIO :: IO a -> m a
show/hide Instances
class Lift t where
Methods
lift :: t -> Q Exp
show/hide Instances
Lift Bool
Lift Char
Lift Int
Lift Integer
(Lift a, Lift b) => Lift (a, b)
(Lift a, Lift b, Lift c) => Lift (a, b, c)
(Lift a, Lift b, Lift c, Lift d) => Lift (a, b, c, d)
(Lift a, Lift b, Lift c, Lift d, Lift e) => Lift (a, b, c, d, e)
(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f) => Lift (a, b, c, d, e, f)
(Lift a, Lift b, Lift c, Lift d, Lift e, Lift f, Lift g) => Lift (a, b, c, d, e, f, g)
Lift a => Lift (Maybe a)
Lift a => Lift [a]
(Lift a, Lift b) => Lift (Either a b)
data Q a
show/hide Instances
Functor Q
Monad Q
Quasi Q
runQ :: Quasi m => Q a -> m a
report :: Bool -> String -> Q ()
recover :: Q a -> Q a -> Q a
reify :: Name -> Q Info
reify looks up information about the Name
currentModule :: Q String
currentModule gives you the name of the module in which this computation is spliced.
runIO :: IO a -> Q a

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
Constructors
Name OccName NameFlavour
show/hide Instances
Data Name
Eq Name
Ord Name
Ppr Name
Show Name
Typeable Name
mkName :: String -> Name
newName :: String -> Q Name
nameBase :: Name -> String
nameModule :: Name -> Maybe String
showName :: Name -> String
showName' :: NameIs -> Name -> String
data NameIs
Constructors
Alone
Applied
Infix
data Dec
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 Dec
Eq Dec
Ppr Dec
Show Dec
Typeable Dec
data Exp
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 Exp
Eq Exp
Ppr Exp
Show Exp
Typeable Exp
data Con
Constructors
NormalC Name [StrictType]
RecC Name [VarStrictType]
InfixC StrictType Name StrictType
ForallC [Name] Cxt Con
show/hide Instances
Data Con
Eq Con
Ppr Con
Show Con
Typeable Con
data Type
Constructors
ForallT [Name] Cxt Type
VarT Name
ConT Name
TupleT Int
ArrowT
ListT
AppT Type Type
show/hide Instances
Data Type
Eq Type
Ppr Type
Show Type
Typeable Type
type Cxt = [Type]
data Match
Constructors
Match Pat Body [Dec]
show/hide Instances
Data Match
Eq Match
Ppr Match
Show Match
Typeable Match
data Clause
Constructors
Clause [Pat] Body [Dec]
show/hide Instances
Data Clause
Eq Clause
Ppr Clause
Show Clause
Typeable Clause
data Body
Constructors
GuardedB [(Guard, Exp)]
NormalB Exp
show/hide Instances
Data Body
Eq Body
Show Body
Typeable Body
data Guard
Constructors
NormalG Exp
PatG [Stmt]
show/hide Instances
Data Guard
Eq Guard
Show Guard
Typeable Guard
data Stmt
Constructors
BindS Pat Exp
LetS [Dec]
NoBindS Exp
ParS [[Stmt]]
show/hide Instances
Data Stmt
Eq Stmt
Ppr Stmt
Show Stmt
Typeable Stmt
data Range
Constructors
FromR Exp
FromThenR Exp Exp
FromToR Exp Exp
FromThenToR Exp Exp Exp
show/hide Instances
Data Range
Eq Range
Ppr Range
Show Range
Typeable Range
data Lit
Constructors
CharL Char
StringL String
IntegerL Integer
RationalL Rational
IntPrimL Integer
FloatPrimL Rational
DoublePrimL Rational
show/hide Instances
Data Lit
Eq Lit
Show Lit
Typeable Lit
data Pat
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
Data Pat
Eq Pat
Ppr Pat
Show Pat
Typeable Pat
type FieldExp = (Name, Exp)
type FieldPat = (Name, Pat)
data Strict
Constructors
IsStrict
NotStrict
show/hide Instances
Data Strict
Eq Strict
Show Strict
Typeable Strict
data Foreign
Constructors
ImportF Callconv Safety String Name Type
ExportF Callconv String Name Type
show/hide Instances
data Callconv
Constructors
CCall
StdCall
show/hide Instances
Data Callconv
Eq Callconv
Show Callconv
Typeable Callconv
data Safety
Constructors
Unsafe
Safe
Threadsafe
show/hide Instances
Data Safety
Eq Safety
Show Safety
Typeable Safety
type StrictType = (Strict, Type)
type VarStrictType = (Name, Strict, Type)
data FunDep
Constructors
FunDep [Name] [Name]
show/hide Instances
Data FunDep
Eq FunDep
Ppr FunDep
Show FunDep
Typeable FunDep
data Info
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 Info
Ppr Info
Show Info
Typeable Info
data Fixity
Constructors
Fixity Int FixityDirection
show/hide Instances
Data Fixity
Eq Fixity
Show Fixity
Typeable Fixity
data FixityDirection
Constructors
InfixL
InfixR
InfixN
show/hide Instances
defaultFixity :: Fixity
maxPrecedence :: Int
returnQ :: a -> Q a
bindQ :: Q a -> (a -> Q b) -> Q b
sequenceQ :: [Q a] -> Q [a]
data NameFlavour
Constructors
NameS
NameQ ModName
NameU Int#
NameL Int#
NameG NameSpace PkgName ModName
show/hide Instances
data NameSpace
Constructors
VarName
DataName
TcClsName
show/hide Instances
mkNameG_v :: String -> String -> String -> Name
mkNameG_d :: String -> String -> String -> Name
mkNameG_tc :: String -> String -> String -> Name
type Uniq = Int
mkNameL :: String -> Uniq -> Name
mkNameU :: String -> Uniq -> Name
tupleTypeName :: Int -> Name
tupleDataName :: Int -> Name
type OccName = PackedString
mkOccName :: String -> OccName
occString :: OccName -> String
type ModName = PackedString
mkModName :: String -> ModName
modString :: ModName -> String
type PkgName = PackedString
mkPkgName :: String -> PkgName
pkgString :: PkgName -> String
Produced by Haddock version 0.8