| Haskell Hierarchical Libraries (template-haskell package) | Source code | Contents | Index
Language.Haskell.TH.Syntax |
Portability | portable
Stability | experimental
Maintainer | libraries@haskell.org
Description
Abstract syntax definitions for Template Haskell.
Synopsis
class Monad 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 => 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
Instances
Quasi IO
Quasi Q
class Lift t where
Methods
lift :: t -> Q Exp
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
Instances
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 |
Instances
Eq Name
Ord Name
Ppr Name
Show 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 |
Instances
Eq Dec
Ppr Dec
Show 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] |
Instances
Eq Exp
Ppr Exp
Show Exp
data Con
Constructors
NormalC Name [StrictType] |
RecC Name [VarStrictType] |
InfixC StrictType Name StrictType |
ForallC [Name] Cxt Con |
Instances
Eq Con
Ppr Con
Show Con
data Type
Constructors
ForallT [Name] Cxt Type |
VarT Name |
ConT Name |
TupleT Int |
ArrowT |
ListT |
AppT Type Type |
Instances
Eq Type
Ppr Type
Show Type
type Cxt = [Type]
data Match
Constructors
Match Pat Body [Dec] |
Instances
Eq Match
Ppr Match
Show Match
data Clause
Constructors
Clause [Pat] Body [Dec] |
Instances
Eq Clause
Ppr Clause
Show Clause
data Body
Constructors
GuardedB [(Guard, Exp)] |
NormalB Exp |
Instances
Eq Body
Show Body
data Guard
Constructors
NormalG Exp |
PatG [Stmt] |
Instances
Eq Guard
Show Guard
data Stmt
Constructors
BindS Pat Exp |
LetS [Dec] |
NoBindS Exp |
ParS [[Stmt]] |
Instances
Eq Stmt
Ppr Stmt
Show Stmt
data Range
Constructors
FromR Exp |
FromThenR Exp Exp |
FromToR Exp Exp |
FromThenToR Exp Exp Exp |
Instances
Eq Range
Ppr Range
Show Range
data Lit
Constructors
CharL Char |
StringL String |
IntegerL Integer |
RationalL Rational |
IntPrimL Integer |
FloatPrimL Rational |
DoublePrimL Rational |
Instances
Eq Lit
Show 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 |
Instances
Eq Pat
Ppr Pat
Show Pat
type FieldExp = (Name, Exp)
type FieldPat = (Name, Pat)
data Strict
Constructors
IsStrict |
NotStrict |
Instances
Eq Strict
Show Strict
data Foreign
Constructors
ImportF Callconv Safety String Name Type |
ExportF Callconv String Name Type |
Instances
Eq Foreign
Ppr Foreign
Show Foreign
data Callconv
Constructors
CCall |
StdCall |
Instances
Eq Callconv
Show Callconv
data Safety
Constructors
Unsafe |
Safe |
Threadsafe |
Instances
Eq Safety
Show Safety
type StrictType = (Strict, Type)
type VarStrictType = (Name, Strict, Type)
data FunDep
Constructors
FunDep [Name] [Name] |
Instances
Eq FunDep
Ppr FunDep
Show 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 |
Instances
Ppr Info
Show Info
data Fixity
Constructors
Fixity Int FixityDirection |
Instances
Eq Fixity
Show Fixity
data FixityDirection
Constructors
InfixL |
InfixR |
InfixN |
Instances
Eq FixityDirection
Show FixityDirection
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 |
Instances
Eq NameFlavour
Ord NameFlavour
data NameSpace
Constructors
VarName |
DataName |
TcClsName |
Instances
Eq NameSpace
Ord NameSpace
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