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

data Info

data ModuleInfo

type InstanceDec

type ParentName

type SumAlt

type SumArity

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

unboxedSumTypeName

unboxedSumDataName

# 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

data PatSynDir

data PatSynArgs

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

type PatSynType

# Library functions

# Pretty-printer

class Ppr a

pprint

pprExp

pprLit

pprPat

pprParendType