|
|
|
|
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 | | location :: Q Loc | | 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 | | | | | | | | | | | | | | type Cxt = [Pred] | | | | data Match = Match Pat Body [Dec] | | data Clause = Clause [Pat] Body [Dec] | | | | | | | | | | | | | | type FieldExp = (Name, Exp) | | type FieldPat = (Name, Pat) | | | | | | | | | | | | data InlineSpec = InlineSpec Bool Bool (Maybe (Bool, Int)) | | data FunDep = FunDep [Name] [Name] | | | | | | data Loc = Loc {} | | data Fixity = Fixity Int FixityDirection | | | | 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 PredQ = Q Pred | | 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 | | type InlineSpecQ = Q InlineSpec | | intPrimL :: Integer -> Lit | | wordPrimL :: Integer -> Lit | | floatPrimL :: Rational -> Lit | | doublePrimL :: Rational -> Lit | | integerL :: Integer -> Lit | | rationalL :: Rational -> Lit | | charL :: Char -> Lit | | stringL :: String -> Lit | | litP :: Lit -> PatQ | | varP :: Name -> PatQ | | tupP :: [PatQ] -> PatQ | | conP :: Name -> [PatQ] -> PatQ | | infixP :: PatQ -> Name -> PatQ -> PatQ | | tildeP :: PatQ -> PatQ | | bangP :: 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 -> [TyVarBndr] -> TypeQ -> DecQ | | dataD :: CxtQ -> Name -> [TyVarBndr] -> [ConQ] -> [Name] -> DecQ | | newtypeD :: CxtQ -> Name -> [TyVarBndr] -> ConQ -> [Name] -> DecQ | | classD :: CxtQ -> Name -> [TyVarBndr] -> [FunDep] -> [DecQ] -> DecQ | | instanceD :: CxtQ -> TypeQ -> [DecQ] -> DecQ | | sigD :: Name -> TypeQ -> DecQ | | forImpD :: Callconv -> Safety -> String -> Name -> TypeQ -> DecQ | | pragInlD :: Name -> InlineSpecQ -> DecQ | | pragSpecD :: Name -> TypeQ -> DecQ | | familyNoKindD :: FamFlavour -> Name -> [TyVarBndr] -> DecQ | | familyKindD :: FamFlavour -> Name -> [TyVarBndr] -> Kind -> DecQ | | dataInstD :: CxtQ -> Name -> [TypeQ] -> [ConQ] -> [Name] -> DecQ | | newtypeInstD :: CxtQ -> Name -> [TypeQ] -> ConQ -> [Name] -> DecQ | | tySynInstD :: Name -> [TypeQ] -> TypeQ -> DecQ | | cxt :: [PredQ] -> CxtQ | | classP :: Name -> [TypeQ] -> PredQ | | equalP :: TypeQ -> TypeQ -> PredQ | | normalC :: Name -> [StrictTypeQ] -> ConQ | | recC :: Name -> [VarStrictTypeQ] -> ConQ | | infixC :: Q (Strict, Type) -> Name -> Q (Strict, Type) -> ConQ | | forallT :: [TyVarBndr] -> CxtQ -> TypeQ -> TypeQ | | varT :: Name -> TypeQ | | conT :: Name -> TypeQ | | appT :: TypeQ -> TypeQ -> TypeQ | | arrowT :: TypeQ | | listT :: TypeQ | | tupleT :: Int -> TypeQ | | sigT :: TypeQ -> Kind -> 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 | | inlineSpecNoPhase :: Bool -> Bool -> InlineSpecQ | | inlineSpecPhase :: Bool -> Bool -> Bool -> Int -> InlineSpecQ | | typeFam :: FamFlavour | | dataFam :: FamFlavour | | class Ppr a where | | | pprint :: Ppr a => a -> String | | pprExp :: Precedence -> Exp -> Doc | | pprLit :: Precedence -> Lit -> Doc | | pprPat :: Precedence -> Pat -> Doc | | pprParendType :: Type -> Doc |
|
|
Documentation |
|
|
Instances | |
|
|
|
|
|
|
|
|
|
reify looks up information about the Name
|
|
|
location gives you the Location at which this
computation is spliced.
|
|
|
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.
|
|
|
Instances | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Constructors | | Instances | |
|
|
|
The CompE constructor represents a list comprehension, and
takes a [Stmt]. The result expression of the comprehension is
the *last* of these, and should be a NoBindS.
E.g. [ f x | x <- xs ] is represented by
CompE [BindS (VarP x) (VarE xs), NoBindS (AppE (VarE f) (VarE x))]
| Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
|
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
|
|
|
Constructors | | Instances | |
|
|
|
Constructors | | Instances | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Methods | | | Instances | |
|
|
|
|
|
|
|
|
|
|
|
|
Produced by Haddock version 2.6.1 |