Safe Haskell | None |
---|---|
Language | Haskell2010 |
Pretty-printing of terms and assorted other values.
Synopsis
- newtype TermStyle = TermStyle {
- pPrintTerm :: forall a. Pretty a => PrettyLevel -> Rational -> Doc -> [a] -> Doc
- class Pretty f => PrettyTerm f where
- prettyPrint :: Pretty a => a -> IO ()
- (<#>) :: Doc -> Doc -> Doc
- pPrintEmpty :: Doc
- pPrintTuple :: [Doc] -> Doc
- pPrintSet :: [Doc] -> Doc
- supply :: [String] -> [String]
- invisible :: TermStyle
- curried :: TermStyle
- uncurried :: TermStyle
- fixedArity :: Int -> TermStyle -> TermStyle
- implicitArguments :: Int -> TermStyle -> TermStyle
- prefix :: TermStyle
- postfix :: TermStyle
- infixStyle :: Int -> TermStyle
- tupleStyle :: TermStyle
- prettyParen :: Bool -> Doc -> Doc
- prettyShow :: Pretty a => a -> String
- prettyNormal :: PrettyLevel
- newtype PrettyLevel = PrettyLevel Int
- class Pretty a where
- pPrintPrec :: PrettyLevel -> Rational -> a -> Doc
- pPrint :: a -> Doc
- pPrintList :: PrettyLevel -> [a] -> Doc
- fullRender :: Mode -> Int -> Float -> (TextDetails -> a -> a) -> a -> Doc -> a
- renderStyle :: Style -> Doc -> String
- render :: Doc -> String
- first :: Doc -> Doc -> Doc
- fsep :: [Doc] -> Doc
- fcat :: [Doc] -> Doc
- cat :: [Doc] -> Doc
- sep :: [Doc] -> Doc
- (<+>) :: Doc -> Doc -> Doc
- ($+$) :: Doc -> Doc -> Doc
- ($$) :: Doc -> Doc -> Doc
- punctuate :: Doc -> [Doc] -> [Doc]
- hang :: Doc -> Int -> Doc -> Doc
- nest :: Int -> Doc -> Doc
- vcat :: [Doc] -> Doc
- hsep :: [Doc] -> Doc
- hcat :: [Doc] -> Doc
- reduceDoc :: Doc -> RDoc
- maybeDoubleQuotes :: Bool -> Doc -> Doc
- maybeQuotes :: Bool -> Doc -> Doc
- maybeBraces :: Bool -> Doc -> Doc
- maybeBrackets :: Bool -> Doc -> Doc
- maybeParens :: Bool -> Doc -> Doc
- braces :: Doc -> Doc
- brackets :: Doc -> Doc
- parens :: Doc -> Doc
- doubleQuotes :: Doc -> Doc
- quotes :: Doc -> Doc
- rational :: Rational -> Doc
- double :: Double -> Doc
- float :: Float -> Doc
- integer :: Integer -> Doc
- int :: Int -> Doc
- rbrace :: Doc
- lbrace :: Doc
- rbrack :: Doc
- lbrack :: Doc
- rparen :: Doc
- lparen :: Doc
- equals :: Doc
- space :: Doc
- colon :: Doc
- comma :: Doc
- semi :: Doc
- isEmpty :: Doc -> Bool
- zeroWidthText :: String -> Doc
- sizedText :: Int -> String -> Doc
- ptext :: String -> Doc
- text :: String -> Doc
- char :: Char -> Doc
- data Doc
- style :: Style
- data TextDetails
- data Style = Style {
- mode :: Mode
- lineLength :: Int
- ribbonsPerLine :: Float
- data Mode
- class Pretty a where
- pPrintPrec :: PrettyLevel -> Rational -> a -> Doc
- pPrint :: a -> Doc
- pPrintList :: PrettyLevel -> [a] -> Doc
Documentation
Defines how to print out a function symbol.
TermStyle | |
|
class Pretty f => PrettyTerm f where Source #
A class for customising the printing of function symbols.
Nothing
Instances
PrettyTerm f => PrettyTerm (Fun f) Source # | |
PrettyTerm f => PrettyTerm (Extended f) Source # | |
prettyPrint :: Pretty a => a -> IO () Source #
Print a value to the console.
pPrintEmpty :: Doc Source #
The empty document. Used to avoid name clashes with empty
.
pPrintTuple :: [Doc] -> Doc Source #
Print a tuple of values.
fixedArity :: Int -> TermStyle -> TermStyle Source #
A helper function that deals with under- and oversaturated applications.
implicitArguments :: Int -> TermStyle -> TermStyle Source #
A helper function that drops a certain number of arguments.
infixStyle :: Int -> TermStyle Source #
For infix operators.
tupleStyle :: TermStyle Source #
For tuples.
prettyParen :: Bool -> Doc -> Doc #
Parenthesize an value if the boolean is true.
prettyShow :: Pretty a => a -> String #
Pretty print a value with the prettyNormal
level.
The "normal" (Level 0) of detail.
newtype PrettyLevel #
Level of detail in the pretty printed output. Level 0 is the least detail.
Instances
Eq PrettyLevel | |
Defined in Text.PrettyPrint.HughesPJClass (==) :: PrettyLevel -> PrettyLevel -> Bool # (/=) :: PrettyLevel -> PrettyLevel -> Bool # | |
Ord PrettyLevel | |
Defined in Text.PrettyPrint.HughesPJClass compare :: PrettyLevel -> PrettyLevel -> Ordering # (<) :: PrettyLevel -> PrettyLevel -> Bool # (<=) :: PrettyLevel -> PrettyLevel -> Bool # (>) :: PrettyLevel -> PrettyLevel -> Bool # (>=) :: PrettyLevel -> PrettyLevel -> Bool # max :: PrettyLevel -> PrettyLevel -> PrettyLevel # min :: PrettyLevel -> PrettyLevel -> PrettyLevel # | |
Show PrettyLevel | |
Defined in Text.PrettyPrint.HughesPJClass showsPrec :: Int -> PrettyLevel -> ShowS # show :: PrettyLevel -> String # showList :: [PrettyLevel] -> ShowS # |
Pretty printing class. The precedence level is used in a similar way as in
the Show
class. Minimal complete definition is either pPrintPrec
or
pPrint
.
pPrintPrec :: PrettyLevel -> Rational -> a -> Doc #
pPrintList :: PrettyLevel -> [a] -> Doc #
Instances
:: Mode | Rendering mode. |
-> Int | Line length. |
-> Float | Ribbons per line. |
-> (TextDetails -> a -> a) | What to do with text. |
-> a | What to do at the end. |
-> Doc | The document. |
-> a | Result. |
The general rendering interface. Please refer to the Style
and Mode
types for a description of rendering mode, line length and ribbons.
renderStyle :: Style -> Doc -> String #
Render the Doc
to a String using the given Style
.
first
returns its first argument if it is non-empty, otherwise its second.
($$) :: Doc -> Doc -> Doc infixl 5 #
Above, except that if the last line of the first argument stops at least one position before the first line of the second begins, these two lines are overlapped. For example:
text "hi" $$ nest 5 (text "there")
lays out as
hi there
rather than
hi there
punctuate :: Doc -> [Doc] -> [Doc] #
punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]
Nest (or indent) a document by a given number of positions
(which may also be negative). nest
satisfies the laws:
nest
0 x = xnest
k (nest
k' x) =nest
(k+k') xnest
k (x<>
y) =nest
k x<>
nest
k ynest
k (x$$
y) =nest
k x$$
nest
k ynest
kempty
=empty
x
, if<>
nest
k y = x<>
yx
non-empty
The side condition on the last law is needed because
empty
is a left identity for <>
.
maybeDoubleQuotes :: Bool -> Doc -> Doc #
Apply doubleQuotes
to Doc
if boolean is true.
zeroWidthText :: String -> Doc #
Some text, but without any width. Use for non-printing text such as a HTML or Latex tags
The abstract type of documents. A Doc represents a set of layouts. A Doc with no occurrences of Union or NoDoc represents just one layout.
Instances
Eq Doc | |
Show Doc | |
IsString Doc | |
Defined in Text.PrettyPrint.HughesPJ fromString :: String -> Doc # | |
Generic Doc | |
Semigroup Doc | |
Monoid Doc | |
NFData Doc | |
Defined in Text.PrettyPrint.HughesPJ | |
Pretty Doc Source # | |
Defined in Twee.Pretty pPrintPrec :: PrettyLevel -> Rational -> Doc -> Doc # pPrintList :: PrettyLevel -> [Doc] -> Doc # | |
type Rep Doc | |
Defined in Text.PrettyPrint.HughesPJ |
data TextDetails #
A TextDetails represents a fragment of text that will be output at some
point in a Doc
.
Chr !Char | A single Char fragment |
Str String | A whole String fragment |
PStr String | Used to represent a Fast String fragment but now deprecated and identical to the Str constructor. |
Instances
A rendering style. Allows us to specify constraints to choose among the many different rendering options.
Style | |
|
Instances
Eq Style | |
Show Style | |
Generic Style | |
type Rep Style | |
Defined in Text.PrettyPrint.Annotated.HughesPJ type Rep Style = D1 (MetaData "Style" "Text.PrettyPrint.Annotated.HughesPJ" "pretty-1.1.3.6" False) (C1 (MetaCons "Style" PrefixI True) (S1 (MetaSel (Just "mode") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Mode) :*: (S1 (MetaSel (Just "lineLength") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: S1 (MetaSel (Just "ribbonsPerLine") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Float)))) |
Rendering mode.
PageMode | Normal rendering ( |
ZigZagMode | With zig-zag cuts. |
LeftMode | No indentation, infinitely long lines ( |
OneLineMode | All on one line, |
Instances
Eq Mode | |
Show Mode | |
Generic Mode | |
type Rep Mode | |
Defined in Text.PrettyPrint.Annotated.HughesPJ type Rep Mode = D1 (MetaData "Mode" "Text.PrettyPrint.Annotated.HughesPJ" "pretty-1.1.3.6" False) ((C1 (MetaCons "PageMode" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "ZigZagMode" PrefixI False) (U1 :: Type -> Type)) :+: (C1 (MetaCons "LeftMode" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "OneLineMode" PrefixI False) (U1 :: Type -> Type))) |
Pretty printing class. The precedence level is used in a similar way as in
the Show
class. Minimal complete definition is either pPrintPrec
or
pPrint
.
pPrintPrec :: PrettyLevel -> Rational -> a -> Doc #
pPrintList :: PrettyLevel -> [a] -> Doc #