|
| 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.8 |