template-haskell-2.13.0.0: Support library for Template Haskell

Safe HaskellSafe
LanguageHaskell2010

Language.Haskell.TH.PprLib

Contents

Description

Monadic front-end to Text.PrettyPrint

Synopsis

The document type

data PprM a Source #

Instances
Monad PprM Source # 
Instance details

Methods

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

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

return :: a -> PprM a #

fail :: String -> PprM a #

Functor PprM Source # 
Instance details

Methods

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

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

Show Doc Source # 
Instance details

Methods

showsPrec :: Int -> Doc -> ShowS #

show :: Doc -> String #

showList :: [Doc] -> ShowS #

Applicative PprM Source # 
Instance details

Methods

pure :: a -> PprM a #

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

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

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

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

Primitive Documents

empty :: Doc Source #

An empty document

semi :: Doc Source #

A ';' character

comma :: Doc Source #

A ',' character

colon :: Doc Source #

A : character

dcolon :: Doc Source #

A "::" string

space :: Doc Source #

A space character

equals :: Doc Source #

A '=' character

arrow :: Doc Source #

A "->" string

lparen :: Doc Source #

A '(' character

rparen :: Doc Source #

A ')' character

lbrack :: Doc Source #

A '[' character

rbrack :: Doc Source #

A ']' character

lbrace :: Doc Source #

A '{' character

rbrace :: Doc Source #

A '}' character

Converting values into documents

Wrapping documents in delimiters

parens :: Doc -> Doc Source #

Wrap document in (...)

brackets :: Doc -> Doc Source #

Wrap document in [...]

braces :: Doc -> Doc Source #

Wrap document in {...}

quotes :: Doc -> Doc Source #

Wrap document in '...'

doubleQuotes :: Doc -> Doc Source #

Wrap document in "..."

Combining documents

(<>) :: Doc -> Doc -> Doc infixl 6 Source #

Beside

(<+>) :: Doc -> Doc -> Doc infixl 6 Source #

Beside, separated by space

hcat :: [Doc] -> Doc Source #

List version of <>

hsep :: [Doc] -> Doc Source #

List version of <+>

($$) :: Doc -> Doc -> Doc infixl 5 Source #

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

($+$) :: Doc -> Doc -> Doc infixl 5 Source #

Above, without dovetailing.

vcat :: [Doc] -> Doc Source #

List version of $$

sep :: [Doc] -> Doc Source #

Either hsep or vcat

cat :: [Doc] -> Doc Source #

Either hcat or vcat

fsep :: [Doc] -> Doc Source #

"Paragraph fill" version of sep

fcat :: [Doc] -> Doc Source #

"Paragraph fill" version of cat

nest :: Int -> Doc -> Doc Source #

Nested

hang :: Doc -> Int -> Doc -> Doc Source #

hang d1 n d2 = sep [d1, nest n d2]

punctuate Source #

Arguments

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

Predicates on documents

isEmpty :: Doc -> PprM Bool Source #

Returns True if the document is empty