template-haskell-2.3.0.1Source codeContentsIndex
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
qLocation :: m Loc
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
location :: Q Loc
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
| WordPrimL 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 Loc = Loc {
loc_filename :: String
loc_package :: String
loc_module :: String
loc_start :: CharPos
loc_end :: CharPos
}
type CharPos = (Int, Int)
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 whereSource
Methods
qNewName :: String -> m NameSource
qReport :: Bool -> String -> m ()Source
qRecover :: m a -> m a -> m aSource
qReify :: Name -> m InfoSource
qLocation :: m LocSource
qRunIO :: IO a -> m aSource
show/hide Instances
class Lift t whereSource
Methods
lift :: t -> Q ExpSource
show/hide Instances
Lift Bool
Lift Char
Lift Int
Lift Integer
Lift a => Lift ([] a)
Lift a => Lift (Maybe a)
(Lift a, Lift b) => Lift (Either a b)
(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)
data Q a Source
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
location :: Q LocSource
location gives you the Location at 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
Constructors
Name OccName NameFlavour
show/hide Instances
mkName :: String -> NameSource
newName :: String -> Q NameSource
nameBase :: Name -> StringSource
nameModule :: Name -> Maybe StringSource
showName :: Name -> StringSource
showName' :: NameIs -> Name -> StringSource
data NameIs Source
Constructors
Alone
Applied
Infix
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
WordPrimL 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
type StrictType = (Strict, Type)Source
type VarStrictType = (Name, Strict, Type)Source
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 Loc Source
Constructors
Loc
loc_filename :: String
loc_package :: String
loc_module :: String
loc_start :: CharPos
loc_end :: CharPos
type CharPos = (Int, Int)Source
data Fixity Source
Constructors
Fixity Int FixityDirection
show/hide Instances
data FixityDirection Source
Constructors
InfixL
InfixR
InfixN
show/hide Instances
defaultFixity :: FixitySource
maxPrecedence :: IntSource
returnQ :: a -> Q aSource
bindQ :: Q a -> (a -> Q b) -> Q bSource
sequenceQ :: [Q a] -> Q [a]Source
data NameFlavour Source
Constructors
NameS
NameQ ModName
NameU Int#
NameL Int#
NameG NameSpace PkgName ModName
show/hide Instances
data NameSpace Source
Constructors
VarName
DataName
TcClsName
show/hide Instances
mkNameG_v :: String -> String -> String -> NameSource
mkNameG_d :: String -> String -> String -> NameSource
mkNameG_tc :: String -> String -> String -> NameSource
type Uniq = IntSource
mkNameL :: String -> Uniq -> NameSource
mkNameU :: String -> Uniq -> NameSource
tupleTypeName :: Int -> NameSource
tupleDataName :: Int -> NameSource
type OccName = PackedStringSource
mkOccName :: String -> OccNameSource
occString :: OccName -> StringSource
type ModName = PackedStringSource
mkModName :: String -> ModNameSource
modString :: ModName -> StringSource
type PkgName = PackedStringSource
mkPkgName :: String -> PkgNameSource
pkgString :: PkgName -> StringSource
Produced by Haddock version 2.4.2