{-# LANGUAGE CPP, FlexibleInstances #-}
module Text.PrettyPrint.Leijen.Text.Monadic (
Doc,
empty, char, text, textStrict, beside, nest, line, linebreak, group, softline,
softbreak, spacebreak,
align, hang, indent, encloseSep, list, tupled, semiBraces,
(<+>), (<++>), (<$>), (</>), (<$$>), (<//>),
hsep, vsep, fillSep, sep, hcat, vcat, fillCat, cat, punctuate,
fill, fillBreak,
enclose, squotes, dquotes, parens, angles, braces, brackets,
lparen, rparen, langle, rangle, lbrace, rbrace, lbracket, rbracket,
squote, dquote, semi, colon, comma, space, dot, backslash, equals,
string, stringStrict, int, integer, float, double, rational, bool,
column, nesting, width,
Pretty(..), prettyM,
SimpleDoc(..), renderPretty, renderCompact, renderOneLine,
displayB, displayT, displayTStrict, displayIO, putDoc, hPutDoc
) where
import Prelude ()
import Prelude.Compat hiding ((<$>))
import Text.PrettyPrint.Leijen.Text (Doc, Pretty(..), SimpleDoc(..),
displayB, displayIO, displayT,
displayTStrict, hPutDoc, putDoc,
renderCompact, renderOneLine,
renderPretty)
import qualified Text.PrettyPrint.Leijen.Text as PP
import Control.Applicative (liftA2, liftA3)
import qualified Data.Text as TS
import Data.Text.Lazy (Text)
infixr 5 </>,<//>,<$>,<$$>
infixr 6 <+>,<++>,`beside`
list :: (Functor m) => m [Doc] -> m Doc
list :: forall (m :: * -> *). Functor m => m [Doc] -> m Doc
list = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [Doc] -> Doc
PP.list
tupled :: (Functor m) => m [Doc] -> m Doc
tupled :: forall (m :: * -> *). Functor m => m [Doc] -> m Doc
tupled = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [Doc] -> Doc
PP.tupled
semiBraces :: (Functor m) => m [Doc] -> m Doc
semiBraces :: forall (m :: * -> *). Functor m => m [Doc] -> m Doc
semiBraces = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [Doc] -> Doc
PP.semiBraces
encloseSep :: (Applicative m) => m Doc -> m Doc -> m Doc -> m [Doc] -> m Doc
encloseSep :: forall (m :: * -> *).
Applicative m =>
m Doc -> m Doc -> m Doc -> m [Doc] -> m Doc
encloseSep m Doc
a m Doc
b m Doc
c m [Doc]
d = forall (f :: * -> *) a b c d.
Applicative f =>
(a -> b -> c -> d) -> f a -> f b -> f c -> f d
liftA3 Doc -> Doc -> Doc -> [Doc] -> Doc
PP.encloseSep m Doc
a m Doc
b m Doc
c forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> m [Doc]
d
punctuate :: (Applicative m) => m Doc -> m [Doc] -> m [Doc]
punctuate :: forall (m :: * -> *). Applicative m => m Doc -> m [Doc] -> m [Doc]
punctuate = forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Doc -> [Doc] -> [Doc]
PP.punctuate
sep :: (Functor m) => m [Doc] -> m Doc
sep :: forall (m :: * -> *). Functor m => m [Doc] -> m Doc
sep = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [Doc] -> Doc
PP.sep
fillSep :: (Functor m) => m [Doc] -> m Doc
fillSep :: forall (m :: * -> *). Functor m => m [Doc] -> m Doc
fillSep = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [Doc] -> Doc
PP.fillSep
hsep :: (Functor m) => m [Doc] -> m Doc
hsep :: forall (m :: * -> *). Functor m => m [Doc] -> m Doc
hsep = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [Doc] -> Doc
PP.hsep
vsep :: (Functor m) => m [Doc] -> m Doc
vsep :: forall (m :: * -> *). Functor m => m [Doc] -> m Doc
vsep = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [Doc] -> Doc
PP.vsep
cat :: (Functor m) => m [Doc] -> m Doc
cat :: forall (m :: * -> *). Functor m => m [Doc] -> m Doc
cat = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [Doc] -> Doc
PP.cat
fillCat :: (Functor m) => m [Doc] -> m Doc
fillCat :: forall (m :: * -> *). Functor m => m [Doc] -> m Doc
fillCat = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [Doc] -> Doc
PP.fillCat
hcat :: (Functor m) => m [Doc] -> m Doc
hcat :: forall (m :: * -> *). Functor m => m [Doc] -> m Doc
hcat = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [Doc] -> Doc
PP.hcat
vcat :: (Functor m) => m [Doc] -> m Doc
vcat :: forall (m :: * -> *). Functor m => m [Doc] -> m Doc
vcat = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [Doc] -> Doc
PP.vcat
beside :: (Applicative m) => m Doc -> m Doc -> m Doc
beside :: forall (m :: * -> *). Applicative m => m Doc -> m Doc -> m Doc
beside = forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (Doc -> Doc -> Doc
PP.beside)
(<+>) :: (Applicative m) => m Doc -> m Doc -> m Doc
<+> :: forall (m :: * -> *). Applicative m => m Doc -> m Doc -> m Doc
(<+>) = forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Doc -> Doc -> Doc
(PP.<+>)
(<++>) :: (Applicative m) => m Doc -> m Doc -> m Doc
<++> :: forall (m :: * -> *). Applicative m => m Doc -> m Doc -> m Doc
(<++>) = forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Doc -> Doc -> Doc
(PP.<++>)
(</>) :: (Applicative m) => m Doc -> m Doc -> m Doc
</> :: forall (m :: * -> *). Applicative m => m Doc -> m Doc -> m Doc
(</>) = forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Doc -> Doc -> Doc
(PP.</>)
(<//>) :: (Applicative m) => m Doc -> m Doc -> m Doc
<//> :: forall (m :: * -> *). Applicative m => m Doc -> m Doc -> m Doc
(<//>) = forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Doc -> Doc -> Doc
(PP.<//>)
(<$>) :: (Applicative m) => m Doc -> m Doc -> m Doc
<$> :: forall (m :: * -> *). Applicative m => m Doc -> m Doc -> m Doc
(<$>) = forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Doc -> Doc -> Doc
(PP.<$>)
(<$$>) :: (Applicative m) => m Doc -> m Doc -> m Doc
<$$> :: forall (m :: * -> *). Applicative m => m Doc -> m Doc -> m Doc
(<$$>) = forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Doc -> Doc -> Doc
(PP.<$$>)
softline :: (Applicative m) => m Doc
softline :: forall (m :: * -> *). Applicative m => m Doc
softline = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.softline
softbreak :: (Applicative m) => m Doc
softbreak :: forall (m :: * -> *). Applicative m => m Doc
softbreak = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.softbreak
spacebreak :: (Applicative m) => m Doc
spacebreak :: forall (m :: * -> *). Applicative m => m Doc
spacebreak = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.spacebreak
squotes :: (Functor m) => m Doc -> m Doc
squotes :: forall (m :: * -> *). Functor m => m Doc -> m Doc
squotes = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Doc -> Doc
PP.squotes
dquotes :: (Functor m) => m Doc -> m Doc
dquotes :: forall (m :: * -> *). Functor m => m Doc -> m Doc
dquotes = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Doc -> Doc
PP.dquotes
braces :: (Functor m) => m Doc -> m Doc
braces :: forall (m :: * -> *). Functor m => m Doc -> m Doc
braces = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Doc -> Doc
PP.braces
parens :: (Functor m) => m Doc -> m Doc
parens :: forall (m :: * -> *). Functor m => m Doc -> m Doc
parens = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Doc -> Doc
PP.parens
angles :: (Functor m) => m Doc -> m Doc
angles :: forall (m :: * -> *). Functor m => m Doc -> m Doc
angles = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Doc -> Doc
PP.angles
brackets :: (Functor m) => m Doc -> m Doc
brackets :: forall (m :: * -> *). Functor m => m Doc -> m Doc
brackets = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Doc -> Doc
PP.brackets
enclose :: (Applicative m) => m Doc -> m Doc -> m Doc -> m Doc
enclose :: forall (m :: * -> *).
Applicative m =>
m Doc -> m Doc -> m Doc -> m Doc
enclose = forall (f :: * -> *) a b c d.
Applicative f =>
(a -> b -> c -> d) -> f a -> f b -> f c -> f d
liftA3 Doc -> Doc -> Doc -> Doc
PP.enclose
lparen :: (Applicative m) => m Doc
lparen :: forall (m :: * -> *). Applicative m => m Doc
lparen = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.lparen
rparen :: (Applicative m) => m Doc
rparen :: forall (m :: * -> *). Applicative m => m Doc
rparen = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.rparen
langle :: (Applicative m) => m Doc
langle :: forall (m :: * -> *). Applicative m => m Doc
langle = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.langle
rangle :: (Applicative m) => m Doc
rangle :: forall (m :: * -> *). Applicative m => m Doc
rangle = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.rangle
lbrace :: (Applicative m) => m Doc
lbrace :: forall (m :: * -> *). Applicative m => m Doc
lbrace = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.lbrace
rbrace :: (Applicative m) => m Doc
rbrace :: forall (m :: * -> *). Applicative m => m Doc
rbrace = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.rbrace
lbracket :: (Applicative m) => m Doc
lbracket :: forall (m :: * -> *). Applicative m => m Doc
lbracket = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.lbracket
rbracket :: (Applicative m) => m Doc
rbracket :: forall (m :: * -> *). Applicative m => m Doc
rbracket = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.rbracket
squote :: (Applicative m) => m Doc
squote :: forall (m :: * -> *). Applicative m => m Doc
squote = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.squote
dquote :: (Applicative m) => m Doc
dquote :: forall (m :: * -> *). Applicative m => m Doc
dquote = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.dquote
semi :: (Applicative m) => m Doc
semi :: forall (m :: * -> *). Applicative m => m Doc
semi = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.semi
colon :: (Applicative m) => m Doc
colon :: forall (m :: * -> *). Applicative m => m Doc
colon = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.colon
comma :: (Applicative m) => m Doc
comma :: forall (m :: * -> *). Applicative m => m Doc
comma = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.comma
space :: (Applicative m) => m Doc
space :: forall (m :: * -> *). Applicative m => m Doc
space = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.space
dot :: (Applicative m) => m Doc
dot :: forall (m :: * -> *). Applicative m => m Doc
dot = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.dot
backslash :: (Applicative m) => m Doc
backslash :: forall (m :: * -> *). Applicative m => m Doc
backslash = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.backslash
equals :: (Applicative m) => m Doc
equals :: forall (m :: * -> *). Applicative m => m Doc
equals = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.equals
string :: (Applicative m) => Text -> m Doc
string :: forall (m :: * -> *). Applicative m => Text -> m Doc
string = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Doc
PP.string
stringStrict :: Monad m => TS.Text -> m Doc
stringStrict :: forall (m :: * -> *). Monad m => Text -> m Doc
stringStrict = forall (m :: * -> *) a. Monad m => a -> m a
return forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Doc
PP.stringStrict
bool :: (Applicative m) => Bool -> m Doc
bool :: forall (m :: * -> *). Applicative m => Bool -> m Doc
bool = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Doc
PP.bool
int :: (Applicative m) => Int -> m Doc
int :: forall (m :: * -> *). Applicative m => Int -> m Doc
int = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Doc
PP.int
integer :: (Applicative m) => Integer -> m Doc
integer :: forall (m :: * -> *). Applicative m => Integer -> m Doc
integer = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. Integer -> Doc
PP.integer
float :: (Applicative m) => Float -> m Doc
float :: forall (m :: * -> *). Applicative m => Float -> m Doc
float = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. Float -> Doc
PP.float
double :: (Applicative m) => Double -> m Doc
double :: forall (m :: * -> *). Applicative m => Double -> m Doc
double = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. Double -> Doc
PP.double
rational :: (Applicative m) => Rational -> m Doc
rational :: forall (m :: * -> *). Applicative m => Rational -> m Doc
rational = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. Rational -> Doc
PP.rational
prettyM :: (Pretty a, Applicative m) => a -> m Doc
prettyM :: forall a (m :: * -> *). (Pretty a, Applicative m) => a -> m Doc
prettyM = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Pretty a => a -> Doc
pretty
fill :: (Functor m) => Int -> m Doc -> m Doc
fill :: forall (m :: * -> *). Functor m => Int -> m Doc -> m Doc
fill = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Doc -> Doc
PP.fill
width :: (Applicative m) => m Doc -> m (Int -> Doc) -> m Doc
width :: forall (m :: * -> *).
Applicative m =>
m Doc -> m (Int -> Doc) -> m Doc
width = forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 Doc -> (Int -> Doc) -> Doc
PP.width
fillBreak :: (Functor m) => Int -> m Doc -> m Doc
fillBreak :: forall (m :: * -> *). Functor m => Int -> m Doc -> m Doc
fillBreak = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Doc -> Doc
PP.fillBreak
indent :: (Functor m) => Int -> m Doc -> m Doc
indent :: forall (m :: * -> *). Functor m => Int -> m Doc -> m Doc
indent = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Doc -> Doc
PP.indent
hang :: (Functor m) => Int -> m Doc -> m Doc
hang :: forall (m :: * -> *). Functor m => Int -> m Doc -> m Doc
hang = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Doc -> Doc
PP.hang
align :: (Functor m) => m Doc -> m Doc
align :: forall (m :: * -> *). Functor m => m Doc -> m Doc
align = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Doc -> Doc
PP.align
empty :: (Applicative m) => m Doc
empty :: forall (m :: * -> *). Applicative m => m Doc
empty = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.empty
char :: (Applicative m) => Char -> m Doc
char :: forall (m :: * -> *). Applicative m => Char -> m Doc
char = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> Doc
PP.char
text :: (Applicative m) => Text -> m Doc
text :: forall (m :: * -> *). Applicative m => Text -> m Doc
text = forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Doc
PP.text
textStrict :: Monad m => TS.Text -> m Doc
textStrict :: forall (m :: * -> *). Monad m => Text -> m Doc
textStrict = forall (m :: * -> *) a. Monad m => a -> m a
return forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Doc
PP.textStrict
line :: (Applicative m) => m Doc
line :: forall (m :: * -> *). Applicative m => m Doc
line = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.line
linebreak :: (Applicative m) => m Doc
linebreak :: forall (m :: * -> *). Applicative m => m Doc
linebreak = forall (f :: * -> *) a. Applicative f => a -> f a
pure Doc
PP.linebreak
nest :: (Functor m) => Int -> m Doc -> m Doc
nest :: forall (m :: * -> *). Functor m => Int -> m Doc -> m Doc
nest = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Doc -> Doc
PP.nest
column :: (Functor m) => m (Int -> Doc) -> m Doc
column :: forall (m :: * -> *). Functor m => m (Int -> Doc) -> m Doc
column = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Int -> Doc) -> Doc
PP.column
nesting :: (Functor m) => m (Int -> Doc) -> m Doc
nesting :: forall (m :: * -> *). Functor m => m (Int -> Doc) -> m Doc
nesting = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Int -> Doc) -> Doc
PP.nesting
group :: (Functor m) => m Doc -> m Doc
group :: forall (m :: * -> *). Functor m => m Doc -> m Doc
group = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Doc -> Doc
PP.group