Language/Haskell/TH.hs

{- | The public face of Template Haskell

For other documentation, refer to:
<http://www.haskell.org/haskellwiki/Template_Haskell>

-}
module Language.Haskell.TH(
	-- * The monad and its operations
	Q,
	runQ,
 -- ** Administration: errors, locations and IO
	reportError,		 -- :: String -> Q ()
	reportWarning,		 -- :: String -> Q ()
	report,			 -- :: Bool -> String -> Q ()
	recover, 	 -- :: Q a -> Q a -> Q a
	location,	 -- :: Q Loc
	Loc(..),
	runIO, 		 -- :: IO a -> Q a
	-- ** Querying the compiler
	-- *** Reify
	reify, 		 -- :: Name -> Q Info
	reifyModule,
	thisModule,
	Info(..), ModuleInfo(..),
	InstanceDec,
	ParentName,
	Arity,
	Unlifted,
	-- *** Name lookup
	lookupTypeName,	 -- :: String -> Q (Maybe Name)
	lookupValueName, -- :: String -> Q (Maybe Name)
	-- *** Instance lookup
	reifyInstances,
	isInstance,
 -- *** Roles lookup
 reifyRoles,
 -- *** Annotation lookup
 reifyAnnotations, AnnLookup(..),

	-- * Typed expressions
	TExp, unType,

	-- * Names
	Name, NameSpace,	-- Abstract
	-- ** Constructing names
	mkName, 	-- :: String -> Name
	newName, 	-- :: String -> Q Name
	-- ** Deconstructing names
	nameBase,	-- :: Name -> String
	nameModule,	-- :: Name -> Maybe String
	-- ** Built-in names
	tupleTypeName, tupleDataName,	-- Int -> Name
	unboxedTupleTypeName, unboxedTupleDataName, -- :: Int -> Name

 -- * The algebraic data types
 -- | The lowercase versions (/syntax operators/) of these constructors are
 -- preferred to these constructors, since they compose better with
 -- quotations (@[| |]@) and splices (@$( ... )@)

 -- ** Declarations
	Dec(..), Con(..), Clause(..), 
	Strict(..), Foreign(..), Callconv(..), Safety(..), Pragma(..),
	Inline(..), RuleMatch(..), Phases(..), RuleBndr(..), AnnTarget(..),
	FunDep(..), FamFlavour(..), TySynEqn(..),
	Fixity(..), FixityDirection(..), defaultFixity, maxPrecedence,
 -- ** Expressions
 Exp(..), Match(..), Body(..), Guard(..), Stmt(..), Range(..), Lit(..),
 -- ** Patterns
 Pat(..), FieldExp, FieldPat,
 -- ** Types
 Type(..), TyVarBndr(..), TyLit(..), Kind, Cxt, Pred(..), Syntax.Role(..),

 -- * Library functions
 -- ** Abbreviations
 InfoQ, ExpQ, DecQ, DecsQ, ConQ, TypeQ, TyLitQ, CxtQ, PredQ, MatchQ, ClauseQ,
 BodyQ, GuardQ, StmtQ, RangeQ, StrictTypeQ, VarStrictTypeQ, PatQ, FieldPatQ,
 RuleBndrQ, TySynEqnQ,

 -- ** Constructors lifted to 'Q'
 -- *** Literals
	intPrimL, wordPrimL, floatPrimL, doublePrimL, integerL, rationalL,
	charL, stringL, stringPrimL,
 -- *** Patterns
	litP, varP, tupP, conP, uInfixP, parensP, infixP,
	tildeP, bangP, asP, wildP, recP,
	listP, sigP, viewP,
	fieldPat,

 -- *** Pattern Guards
	normalB, guardedB, normalG, normalGE, patG, patGE, match, clause,

 -- *** Expressions
	dyn, global, varE, conE, litE, appE, uInfixE, parensE,
	infixE, infixApp, sectionL, sectionR,
	lamE, lam1E, lamCaseE, tupE, condE, multiIfE, letE, caseE, appsE,
	listE, sigE, recConE, recUpdE, stringE, fieldExp,
 -- **** Ranges
 fromE, fromThenE, fromToE, fromThenToE,

 -- ***** Ranges with more indirection
 arithSeqE,
 fromR, fromThenR, fromToR, fromThenToR,
 -- **** Statements
 doE, compE,
 bindS, letS, noBindS, parS,

 -- *** Types
	forallT, varT, conT, appT, arrowT, listT, tupleT, sigT, litT,
 promotedT, promotedTupleT, promotedNilT, promotedConsT,
 -- **** Type literals
 numTyLit, strTyLit,
 -- **** Strictness
	isStrict, notStrict, strictType, varStrictType,
 -- **** Class Contexts
 cxt, classP, equalP, normalC, recC, infixC, forallC,

 -- *** Kinds
 varK, conK, tupleK, arrowK, listK, appK, starK, constraintK,

 -- *** Roles
 nominalR, representationalR, phantomR, inferR,

 -- *** Top Level Declarations
 -- **** Data
	valD, funD, tySynD, dataD, newtypeD,
 -- **** Class
 classD, instanceD, sigD,
 -- **** Role annotations
 roleAnnotD,
 -- **** Type Family / Data Family
 familyNoKindD, familyKindD, dataInstD,
 closedTypeFamilyNoKindD, closedTypeFamilyKindD,
 newtypeInstD, tySynInstD,
 typeFam, dataFam, tySynEqn,
 -- **** Foreign Function Interface (FFI)
 cCall, stdCall, unsafe, safe, forImpD,
 -- **** Pragmas
 ruleVar, typedRuleVar,
 pragInlD, pragSpecD, pragSpecInlD, pragSpecInstD, pragRuleD, pragAnnD,

	-- * Pretty-printer
 Ppr(..), pprint, pprExp, pprLit, pprPat, pprParendType

 ) where

import Language.Haskell.TH.Syntax as Syntax
import Language.Haskell.TH.Lib
import Language.Haskell.TH.Ppr

AltStyle によって変換されたページ (->オリジナル) /