Language.Haskell.TH

# The monad and its operations

data Q a

runQ

## Administration: errors, locations and IO

reportError

reportWarning

report

recover

location

data Loc

runIO

## Querying the compiler

### Reify

reify

reifyModule

thisModule

data Info

data ModuleInfo

type InstanceDec

type ParentName

type Arity

type Unlifted

### Language extension lookup

data Extension

extsEnabled

isExtEnabled

### Name lookup

lookupTypeName

lookupValueName

### Fixity lookup

reifyFixity

### Instance lookup

reifyInstances

isInstance

### Roles lookup

reifyRoles

### Annotation lookup

reifyAnnotations

data AnnLookup

### Constructor strictness lookup

reifyConStrictness

# Typed expressions

data TExp a

unType

# Names

data Name

data NameSpace

## Constructing names

mkName

newName

## Deconstructing names

nameBase

nameModule

namePackage

nameSpace

## Built-in names

tupleTypeName

tupleDataName

unboxedTupleTypeName

unboxedTupleDataName

# The algebraic data types

## Declarations

data Dec

data Con

data Clause

data SourceUnpackedness

data SourceStrictness

data DecidedStrictness

data Bang

type Strict

data Foreign

data Callconv

data Safety

data Pragma

data Inline

data RuleMatch

data Phases

data RuleBndr

data AnnTarget

data FunDep

data FamFlavour

data TySynEqn

data TypeFamilyHead

data Fixity

data FixityDirection

defaultFixity

maxPrecedence

## Expressions

data Exp

data Match

data Body

data Guard

data Stmt

data Range

data Lit

## Patterns

data Pat

type FieldExp

type FieldPat

## Types

data Type

data TyVarBndr

data TyLit

type Kind

type Cxt

type Pred

data Role

data FamilyResultSig

data InjectivityAnn

# Library functions

## Abbreviations

type InfoQ

type ExpQ

type DecQ

type DecsQ

type ConQ

type TypeQ

type TyLitQ

type CxtQ

type PredQ

type MatchQ

type ClauseQ

type BodyQ

type GuardQ

type StmtQ

type RangeQ

type SourceStrictnessQ

type SourceUnpackednessQ

type BangTypeQ

type VarBangTypeQ

type StrictTypeQ

type VarStrictTypeQ

type PatQ

type FieldPatQ

type RuleBndrQ

type TySynEqnQ

## Constructors lifted to `Q`

### Literals

intPrimL

wordPrimL

floatPrimL

doublePrimL

integerL

rationalL

charL

stringL

stringPrimL

charPrimL

### 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

varE

conE

litE

appE

uInfixE

parensE

staticE

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

infixT

uInfixT

parensT

equalityT

listT

tupleT

sigT

litT

promotedT

promotedTupleT

promotedNilT

promotedConsT

#### Type literals

numTyLit

strTyLit

#### Strictness

noSourceUnpackedness

sourceNoUnpack

sourceUnpack

noSourceStrictness

sourceLazy

sourceStrict

isStrict

notStrict

unpacked

bang

bangType

varBangType

strictType

varStrictType

#### Class Contexts

cxt

classP

equalP

#### Constructors

normalC

recC

infixC

forallC

gadtC

recGadtC

### 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

instanceWithOverlapD

data Overlap

sigD

standaloneDerivD

defaultSigD

#### Role annotations

roleAnnotD

#### Type Family / Data Family

dataFamilyD

openTypeFamilyD

closedTypeFamilyD

dataInstD

familyNoKindD

familyKindD

closedTypeFamilyNoKindD

closedTypeFamilyKindD

newtypeInstD

tySynInstD

typeFam

dataFam

tySynEqn

injectivityAnn

noSig

kindSig

tyVarSig

#### Foreign Function Interface (FFI)

cCall

stdCall

cApi

prim

javaScript

unsafe

safe

forImpD

#### Pragmas

ruleVar

typedRuleVar

pragInlD

pragSpecD

pragSpecInlD

pragSpecInstD

pragRuleD

pragAnnD

pragLineD

# Pretty-printer

class Ppr a

pprint

pprExp

pprLit

pprPat

pprParendType