|
Text.PrettyPrint.HughesPJ | Portability | portable | Stability | provisional | Maintainer | libraries@haskell.org |
|
|
|
|
|
Description |
John Hughes's and Simon Peyton Jones's Pretty Printer Combinators
Based on The Design of a Pretty-printing Library
in Advanced Functional Programming,
Johan Jeuring and Erik Meijer (eds), LNCS 925
http://www.cs.chalmers.se/~rjmh/Papers/pretty.ps
Heavily modified by Simon Peyton Jones, Dec 96
|
|
Synopsis |
|
|
|
|
The document type
|
|
|
The abstract type of documents.
The Show instance is equivalent to using render.
| Instances | |
|
|
Constructing documents
|
|
Converting values into documents
|
|
|
A document of height and width 1, containing a literal character.
|
|
|
A document of height 1 containing a literal string.
text satisfies the following laws:
The side condition on the last law is necessary because text ""
has height 1, while empty has no height.
|
|
|
An obsolete function, now identical to text.
|
|
|
int n = text (show n) |
|
|
integer n = text (show n) |
|
|
float n = text (show n) |
|
|
double n = text (show n) |
|
|
rational n = text (show n) |
|
Simple derived documents
|
|
|
A ';' character
|
|
|
A ',' character
|
|
|
A ':' character
|
|
|
A space character
|
|
|
A '=' character
|
|
|
A '(' character
|
|
|
A ')' character
|
|
|
A '[' character
|
|
|
A ']' character
|
|
|
A '{' character
|
|
|
A '}' character
|
|
Wrapping documents in delimiters
|
|
|
Wrap document in (...)
|
|
|
Wrap document in [...]
|
|
|
Wrap document in {...}
|
|
|
Wrap document in '...'
|
|
|
Wrap document in "..."
|
|
Combining documents
|
|
|
The empty document, with no height and no width.
empty is the identity for <>, <+>, $$ and $+$, and anywhere
in the argument list for sep, hcat, hsep, vcat, fcat etc.
|
|
|
Beside.
<> is associative, with identity empty.
|
|
|
Beside, separated by space, unless one of the arguments is empty.
<+> is associative, with identity empty.
|
|
|
List version of <>.
|
|
|
List version of <+>.
|
|
|
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
$$ is associative, with identity empty, and also satisfies
- (x $$ y) <> z = x $$ (y <> z), if y non-empty.
|
|
|
Above, with no overlapping.
$+$ is associative, with identity empty.
|
|
|
List version of $$.
|
|
|
Either hsep or vcat.
|
|
|
Either hcat or vcat.
|
|
|
"Paragraph fill" version of sep.
|
|
|
"Paragraph fill" version of cat.
|
|
|
Nest (or indent) a document by a given number of positions
(which may also be negative). nest satisfies the laws:
The side condition on the last law is needed because
empty is a left identity for <>.
|
|
|
hang d1 n d2 = sep [d1, nest n d2] |
|
|
punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn] |
|
Predicates on documents
|
|
|
Returns True if the document is empty
|
|
Rendering documents
|
|
Default rendering
|
|
|
Renders the document as a string using the default style.
|
|
Rendering with a particular style
|
|
|
A rendering style.
| Constructors | Style | | mode :: Mode | The rendering mode
| lineLength :: Int | Length of line, in chars
| ribbonsPerLine :: Float | Ratio of ribbon length to line length
|
|
|
|
|
|
The default style (mode=PageMode, lineLength=100, ribbonsPerLine=1.5).
|
|
|
Render the document as a string using a specified style.
|
|
General rendering
|
|
|
:: 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.
|
|
|
|
Rendering mode.
| Constructors | PageMode | Normal
| ZigZagMode | With zig-zag cuts
| LeftMode | No indentation, infinitely long lines
| OneLineMode | All on one line
|
|
|
|
|
|
|
Produced by Haddock version 0.9 |