- (<++>) : Doc ann -> Doc ann -> Doc ann
Concatenates two documents with a space in between.
Totality: total
Fixity Declaration: infixr operator, level 6- data Doc : Type -> Type
This data type represents pretty documents that have
been annotated with an arbitrary data type `ann`.
Totality: total
Constructors:
- Empty : Doc ann
- Chara : Char -> Doc ann
- Text : Int -> String -> Doc ann
- Line : Doc ann
- FlatAlt : Lazy (Doc ann) -> Lazy (Doc ann) -> Doc ann
- Cat : Doc ann -> Doc ann -> Doc ann
- Nest : Int -> Doc ann -> Doc ann
- Union : Lazy (Doc ann) -> Lazy (Doc ann) -> Doc ann
- Column : (Int -> Doc ann) -> Doc ann
- WithPageWidth : (PageWidth -> Doc ann) -> Doc ann
- Nesting : (Int -> Doc ann) -> Doc ann
- Annotated : ann -> Doc ann -> Doc ann
- FittingPredicate : Type -> Type
- Totality: total
- data FusionDepth : Type
Fusion depth parameter.
Totality: total
Constructors:
- Shallow : FusionDepth
Do not dive deep into nested documents.
- Deep : FusionDepth
Recurse into all parts of the `Doc`. May impact performace.
- record LayoutOptions : Type
- Totality: total
Constructor: - MkLayoutOptions : PageWidth -> LayoutOptions
Projection: - .layoutPageWidth : LayoutOptions -> PageWidth
- data PageWidth : Type
Maximum number of characters that fit in one line.
Totality: total
Constructors:
- AvailablePerLine : Int -> Double -> PageWidth
The `Int` is the number of characters, including whitespace, that fit in a line.
The `Double` is the ribbon, the fraction of the toal page width that can be printed on.
- Unbounded : PageWidth
The layouters should not introduce line breaks.
- interface Pretty : Type -> Type
Overloaded converison to `Doc`.
Parameters: a
Methods:
- pretty : a -> Doc ann
- prettyPrec : Prec -> a -> Doc ann
Implementations:
- Pretty String
- Pretty a => Pretty (List a)
- Pretty a => Pretty (List1 a)
- Pretty ()
- Pretty Bool
- Pretty Char
- Pretty Nat
- Pretty Int
- Pretty Integer
- Pretty Double
- Pretty Bits8
- Pretty Bits16
- Pretty Bits32
- Pretty Bits64
- (Pretty a, Pretty b) => Pretty (a, b)
- Pretty a => Pretty (Maybe a)
- Pretty StopReason
- data SimpleDocStream : Type -> Type
This data type represents laid out documents and is used by the display functions.
Totality: total
Constructors:
- SEmpty : SimpleDocStream ann
- SChar : Char -> Lazy (SimpleDocStream ann) -> SimpleDocStream ann
- SText : Int -> String -> Lazy (SimpleDocStream ann) -> SimpleDocStream ann
- SLine : Int -> SimpleDocStream ann -> SimpleDocStream ann
- SAnnPush : ann -> SimpleDocStream ann -> SimpleDocStream ann
- SAnnPop : SimpleDocStream ann -> SimpleDocStream ann
- align : Doc ann -> Doc ann
Lays out a document with the nesting level set to the current column.
Totality: total- alterAnnotations : (ann -> List ann') -> Doc ann -> Doc ann'
Changes the annotations of a document. Individual annotations can be removed,
changed, or replaced by multiple ones.
Totality: total- alterAnnotationsS : (ann -> Maybe ann') -> SimpleDocStream ann -> SimpleDocStream ann'
Changes the annotation of a document to a different annotation or none.
Totality: total- annotate : ann -> Doc ann -> Doc ann
Adds an annotation to a document.
Totality: total- cat : List (Doc ann) -> Doc ann
Tries laying out the documents separated with nothing, and if it does not fit the page,
separates them with newlines.
Totality: total- collectAnnotations : Monoid m => (ann -> m) -> SimpleDocStream ann -> m
Collects all annotations from a document.
Totality: total- column : (Int -> Doc ann) -> Doc ann
Layout a document depending on which column it starts at.
Totality: total- concatWith : (Doc ann -> Doc ann -> Doc ann) -> List (Doc ann) -> Doc ann
Concatenate all documents element-wise with a binary function.
Totality: total- defaultLayoutOptions : LayoutOptions
- Totality: total
- defaultPageWidth : PageWidth
- Totality: total
- emptyDoc : Doc ann
The empty document behaves like `pretty ""`, so it has a height of 1.
Totality: total- enclose : Doc ann -> Doc ann -> Doc ann -> Doc ann
Encloses the document between two other documents using `(<+>)`.
Totality: total- encloseSep : Doc ann -> Doc ann -> Doc ann -> List (Doc ann) -> Doc ann
Concatenates the documents separated by `s` and encloses the resulting document by `l` and `r`.
Totality: total- fill : Int -> Doc ann -> Doc ann
Lays out a document. It then appends spaces until the width is equal to `i`.
If the width is already larger, nothing is appended.
Totality: total- fillBreak : Int -> Doc ann -> Doc ann
First lays out the document. It then appends spaces until the width is equal to `i`.
If the width is already larger than `i`, the nesting level is decreased by `i`
and a line is appended.
Totality: total- fillCat : List (Doc ann) -> Doc ann
Concatenates documents horizontally with `(<+>)` as log as it fits the page, then
inserts a line and continues.
Totality: total- fillSep : List (Doc ann) -> Doc ann
Concatenates the documents horizontally with `(<++>)` as long as it fits the page,
then inserts a line and continues.
Totality: total- flatAlt : Lazy (Doc ann) -> Lazy (Doc ann) -> Doc ann
By default renders the first document, When grouped renders the second, with
the first as fallback when there is not enough space.
Totality: total- fuse : FusionDepth -> Doc ann -> Doc ann
Combines text nodes so they can be rendered more efficiently.
Totality: total- group : Doc ann -> Doc ann
Tries laying out a document into a single line by removing the contained
line breaks; if this does not fit the page, or has an `hardline`, the document
is laid out without changes.
Totality: total- hang : Int -> Doc ann -> Doc ann
Lays out a document with a nesting level set to the current column plus `i`.
Negative values are allowed, and decrease the nesting level accordingly.
Totality: total- hardline : Doc ann
A line break, even when grouped.
Totality: total- hcat : List (Doc ann) -> Doc ann
Concatenates all documents horizontally with `(<+>)`.
Totality: total- hsep : List (Doc ann) -> Doc ann
Concatenates all documents horizontally with `(<++>)`.
Totality: total- indent : Int -> Doc ann -> Doc ann
Indents a document with `i` spaces, starting from the current cursor position.
Totality: total- layoutCompact : Doc ann -> SimpleDocStream ann
Lays out the document without adding any indentation. This layouter is very fast.
Totality: total- layoutPretty : LayoutOptions -> Doc ann -> SimpleDocStream ann
The default layout algorithm.
Totality: total- layoutSmart : LayoutOptions -> Doc ann -> SimpleDocStream ann
Layout algorithm with more lookahead than layoutPretty.
Totality: total- layoutUnbounded : Doc ann -> SimpleDocStream ann
Layout a document with unbounded page width.
Totality: total- layoutWadlerLeijen : FittingPredicate ann -> PageWidth -> Doc ann -> SimpleDocStream ann
The Wadler/Leijen layout algorithm.
Totality: total- line : Doc ann
Advances to the next line and indents to the current nesting level.
Totality: total- line' : Doc ann
Like `line`, but behaves like `neutral` if the line break is undone by `group`.
Totality: total- list : List (Doc ann) -> Doc ann
Variant of `encloseSep` with braces and comma as separator.
Totality: total- nest : Int -> Doc ann -> Doc ann
Lays out a document with the current nesting level increased by `i`.
Totality: total- nesting : (Int -> Doc ann) -> Doc ann
Layout a document depending on the current nesting level.
Totality: total- pageWidth : (PageWidth -> Doc ann) -> Doc ann
Layout a document depending on the page width, if one has been specified.
Totality: total- plural : (Num amount, Eq amount) => doc -> doc -> amount -> doc
- Totality: total
- pretty : Pretty a => a -> Doc ann
- Totality: total
- prettyPrec : Pretty a => Prec -> a -> Doc ann
- Totality: total
- punctuate : Doc ann -> List (Doc ann) -> List (Doc ann)
Appends `p` to all but the last document.
Totality: total- reAnnotate : (ann -> ann') -> Doc ann -> Doc ann'
Changes the annotations of a document.
Totality: total- reAnnotateS : (ann -> ann') -> SimpleDocStream ann -> SimpleDocStream ann'
Changes the annotation of a document.
Totality: total- removeTrailingWhitespace : SimpleDocStream ann -> SimpleDocStream ann
Removes all trailing space characters.
Totality: total- renderShow : SimpleDocStream ann -> String -> String
- Totality: total
- sep : List (Doc ann) -> Doc ann
Tries laying out the documents separated with spaces and if this does not fit,
separates them with newlines.
Totality: total- softline : Doc ann
Behaves like `space` if the resulting output fits the page, otherwise like `line`.
Totality: total- softline' : Doc ann
Like `softline`, but behaves like `neutral` if the resulting output does not fit
on the page.
Totality: total- spaces : Int -> Doc ann
Insert a number of spaces.
Totality: total- surround : Doc ann -> Doc ann -> Doc ann -> Doc ann
Reordering of `encloses`.
Example: concatWith (surround (pretty ".")) [pretty "Text", pretty "PrettyPrint", pretty "Doc"]
Text.PrettyPrint.Doc
Totality: total- textSpaces : Int -> String
- Totality: total
- traverse : Applicative f => (ann -> f ann') -> SimpleDocStream ann -> f (SimpleDocStream ann')
Transform a document based on its annotations.
Totality: total- tupled : List (Doc ann) -> Doc ann
Variant of `encloseSep` with parentheses and comma as separator.
Totality: total- unAnnotate : Doc ann -> Doc xxx
Removes all annotations.
Totality: total- unAnnotateS : SimpleDocStream ann -> SimpleDocStream xxx
Removes all annotations.
Totality: total- vcat : List (Doc ann) -> Doc ann
Vertically concatenates the documents. If it is grouped, the line breaks are removed.
Totality: total- vsep : List (Doc ann) -> Doc ann
Concatenates all documents above each other. If a `group` undoes the line breaks,
the documents are separated with a space instead.
Totality: total- width : Doc ann -> (Int -> Doc ann) -> Doc ann
Lays out a document, and makes the column width of it available to a function.
Totality: total