template-haskell-2.17.0.0: Support library for Template Haskell
Safe HaskellSafe
LanguageHaskell2010

Language.Haskell.TH.PprLib

Description

Monadic front-end to Text.PrettyPrint

Synopsis

The document type

type Doc = PprM Doc #

data PprM a #

Instances

Instances details
Applicative PprM # 
Instance details

Defined in Language.Haskell.TH.PprLib

Methods

pure :: a -> PprM a Source #

(<*>) :: PprM (a -> b) -> PprM a -> PprM b Source #

liftA2 :: (a -> b -> c) -> PprM a -> PprM b -> PprM c Source #

(*>) :: PprM a -> PprM b -> PprM b Source #

(<*) :: PprM a -> PprM b -> PprM a Source #

Functor PprM # 
Instance details

Defined in Language.Haskell.TH.PprLib

Methods

fmap :: (a -> b) -> PprM a -> PprM b Source #

(<$) :: a -> PprM b -> PprM a Source #

Monad PprM # 
Instance details

Defined in Language.Haskell.TH.PprLib

Methods

(>>=) :: PprM a -> (a -> PprM b) -> PprM b Source #

(>>) :: PprM a -> PprM b -> PprM b Source #

return :: a -> PprM a Source #

Show Doc # 
Instance details

Defined in Language.Haskell.TH.PprLib

Primitive Documents

empty #

Arguments

:: Doc

An empty document

semi #

Arguments

:: Doc

A ';' character

comma #

Arguments

:: Doc

A ',' character

colon #

Arguments

:: Doc

A : character

dcolon #

Arguments

:: Doc

A "::" string

space #

Arguments

:: Doc

A space character

equals #

Arguments

:: Doc

A '=' character

arrow #

Arguments

:: Doc

A "->" string

lparen #

Arguments

:: Doc

A '(' character

rparen #

Arguments

:: Doc

A ')' character

lbrack #

Arguments

:: Doc

A '[' character

rbrack #

Arguments

:: Doc

A ']' character

lbrace #

Arguments

:: Doc

A '{' character

rbrace #

Arguments

:: Doc

A '}' character

Converting values into documents

char :: Char -> Doc #

int :: Int -> Doc #

Wrapping documents in delimiters

parens #

Arguments

:: Doc 
-> Doc

Wrap document in (...)

brackets #

Arguments

:: Doc 
-> Doc

Wrap document in [...]

braces #

Arguments

:: Doc 
-> Doc

Wrap document in {...}

quotes #

Arguments

:: Doc 
-> Doc

Wrap document in '...'

doubleQuotes #

Arguments

:: Doc 
-> Doc

Wrap document in "..."

Combining documents

(<>) infixl 6 #

Arguments

:: Doc 
-> Doc 
-> Doc

Beside

(<+>) infixl 6 #

Arguments

:: Doc 
-> Doc 
-> Doc

Beside, separated by space

hcat #

Arguments

:: [Doc] 
-> Doc

List version of <>

hsep #

Arguments

:: [Doc] 
-> Doc

List version of <+>

($$) infixl 5 #

Arguments

:: Doc 
-> Doc 
-> Doc

Above; if there is no overlap it "dovetails" the two

($+$) infixl 5 #

Arguments

:: Doc 
-> Doc 
-> Doc

Above, without dovetailing.

vcat #

Arguments

:: [Doc] 
-> Doc

List version of $$

sep #

Arguments

:: [Doc] 
-> Doc

Either hsep or vcat

cat #

Arguments

:: [Doc] 
-> Doc

Either hcat or vcat

fsep #

Arguments

:: [Doc] 
-> Doc

"Paragraph fill" version of sep

fcat #

Arguments

:: [Doc] 
-> Doc

"Paragraph fill" version of cat

nest #

Arguments

:: Int 
-> Doc 
-> Doc

Nested

hang #

Arguments

:: Doc 
-> Int 
-> Doc 
-> Doc
hang d1 n d2 = sep [d1, nest n d2]

punctuate #

Arguments

:: Doc 
-> [Doc] 
-> [Doc]
punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]

Predicates on documents

isEmpty #

Arguments

:: Doc 
-> PprM Bool

Returns True if the document is empty