h"F;A$      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*(c) Trevor Elliott 2015 BSD-style (see the file LICENSE)!David Terei stableportableSafe8$pretty,Current offset from the end of the document.prettyCurrently open spans.prettyCollected annotation regions.prettyCollected output.prettyA Span0 represents the result of an annotation after a Doc has been rendered, capturing where the annotation now starts and ends in the rendered output.prettyRendering mode.prettyNormal rendering (  and  respected').prettyWith zig-zag cuts.pretty'No indentation, infinitely long lines ( * ignored), but explicit new lines, i.e., text "one" $$ text "two", are respected. prettyAll on one line,  " ignored and explicit new lines ($$) are turned into spaces. prettyA rendering style. Allows us to specify constraints to choose among the many different rendering options. prettyThe rendering mode. pretty(Maximum length of a line, in characters.prettyRatio of line length to ribbon length. A ribbon refers to the characters on a line  excluding indentation. So a   of 100, with a  of 2.0 would only allow up to 50 characters of ribbon to be displayed on a line, while allowing it to be indented up to 50 characters.prettyA TextDetails represents a fragment of text that will be output at some point in a Doc.prettyA single Char fragmentprettyA whole String fragmentprettyUsed to represent a Fast String fragment but now deprecated and identical to the Str constructor.prettyAn annotation (side-metadata) attached at a particular point in a Doc7. Allows carrying non-pretty-printed data around in a Doc that is attached at particular points in the structure. Once the Doc' is render to an output type (such as ), we can also retrieve where in the rendered document our annotations start and end (see  and O).prettyRDoc is a "reduced GDoc", guaranteed not to have a top-level Above or Beside.pretty3The abstract type of documents. A Doc represents a set of layouts. A Doc with no occurrences of Union or NoDoc represents just one layout.prettyAn empty span, see .pretty text "" $$ x.pretty text s <> x.prettynest k x.prettyul union ur.prettyThe empty set of documents.prettyTrue  = space between.prettyTrue  = never overlap.pretty#Attach an annotation to a document.prettyA document of height and width 1, containing a literal character.pretty5A document of height 1 containing a literal string.  satisfies the following laws:  s C  t =  (st) "" C x = x, if x non-empty8The side condition on the last law is necessary because  "" has height 1, while  has no height.prettySame as text". Used to be used for Bytestrings.prettySome text with any width. (text s = sizedText (length s) s)prettySome text, but without any width. Use for non-printing text such as a HTML or Latex tagspretty2The empty document, with no height and no width.  is the identity for C, D, A and B), and anywhere in the argument list for E, ;, <, =, G etc.prettyReturns  if the document is emptypretty3Produce spacing for indenting the amount specified.an old version inserted tabs being 8 columns apart in the output.5prettyApply 2 to  if boolean is true.6prettyApply 3 to  if boolean is true.7prettyApply 4 to  if boolean is true.8prettyApply 0 to  if boolean is true.9prettyApply 1 to  if boolean is true.:pretty*Perform some simplification of a built up GDoc.;prettyList version of C.<prettyList version of D.=prettyList version of A.>prettyNest (or indent) a document by a given number of positions (which may also be negative). > satisfies the laws: > 0 x = x > k (> k' x) = > (k+k') x > k (x C y) = > k z C > k y > k (x A y) = > k x A > k y > k  = x C > k y = x C y, if x non-empty6The side condition on the last law is needed because  is a left identity for C.?pretty "hang d1 n d2 = sep [d1, nest n d2]@pretty punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]pretty&Arg of a TextBeside is always an RDoc.AprettyAbove, 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 thereA is associative, with identity , and also satisfies(x A y) C z = x A (y C z), if y non-empty.BprettyAbove, with no overlapping. B is associative, with identity .Cpretty Beside. C is associative, with identity .Dpretty;Beside, separated by space, unless one of the arguments is . D is associative, with identity .EprettyEither < or =.FprettyEither ; or =.Gpretty"Paragraph fill" version of F.Hpretty"Paragraph fill" version of E.Iprettyfirst returns its first argument if it is non-empty, otherwise its second.JprettyThe default style (1mode=PageMode, lineLength=100, ribbonsPerLine=1.5).Kpretty Render the Doc to a String using the default Style (see J).Lpretty Render the Doc to a String using the given Style.prettyDefault TextDetails printer.Mpretty5The general rendering interface. Please refer to the Style and Mode types for a description of rendering mode, line length and ribbons.NprettyThe general rendering interface, supporting annotations. Please refer to the Style and Mode types for a description of rendering mode, line length and ribbons.OprettyRender an annotated Doc* to a String and list of annotations (see ) using the default Style (see J).PprettyRender out a String, interpreting the annotations as part of the resulting document. IMPORTANT: the size of the annotation string does NOT figure into the layout of the document, so the document will lay out as though the annotations are not present.QprettyRender a document with annotations, by interpreting the start and end of the annotations, as well as the text details in the context of a monad. prettyA ';' character!prettyA ',' character"prettyA : character#prettyA space character$prettyA '=' character%prettyA '(' character&prettyA ')' character'prettyA '[' character(prettyA ']' character)prettyA '{' character*prettyA '}' character+pretty int n = text (show n),pretty integer n = text (show n)-pretty float n = text (show n).pretty double n = text (show n)/pretty rational n = text (show n)0prettyWrap document in '...'1prettyWrap document in "..."2prettyWrap document in (...)3prettyWrap document in [...]4prettyWrap document in {...}MprettyRendering mode.pretty Line length.prettyRibbons per line.prettyWhat to do with text.prettyWhat to do at the end.pretty The document.prettyResult.NprettyRendering mode.pretty Line length.prettyRibbons per line.prettyWhat to do with text.prettyWhat to do at the end.pretty The document.prettyResult.PprettyStarting an annotation.prettyEnding an annotation.QprettyStarting an annotation.prettyEnding an annotation.prettyText formatting.pretty Document end.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ+,-./ !"#$%&'()*2340156789CD;?@I:KOPQ JL MNA5B5C6D6*(c) Trevor Elliott 2015 BSD-style (see the file LICENSE)!David Terei stableportableSafe8%  !"#$%&'()*+,-./01234;<=>?@ABCDEFGHJKLMNO+,-./ !"#$%&'()*23401CD;?@KO JLMN *(c) Trevor Elliott 2015 BSD-style (see the file LICENSE)!David Terei stableportableSafe8(kprettyPretty printing class. The precedence level is used in a similar way as in the . class. Minimal complete definition is either l or m.oprettyLevel of detail in the pretty printed output. Level 0 is the least detail.qpretty!The "normal" (Level 0) of detail.rprettyPretty print a value with the q level.spretty-Parenthesize an value if the boolean is true.    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQklmnopqrs klmnopqrs"(c) The University of Glasgow 2001 BSD-style (see the file LICENSE)!David Terei stableportableSafe8;"prettyRDoc is a "reduced GDoc", guaranteed not to have a top-level Above or Beside.pretty3The abstract type of documents. A Doc represents a set of layouts. A Doc with no occurrences of Union or NoDoc represents just one layout.prettyA document of height and width 1, containing a literal character.pretty5A document of height 1 containing a literal string.  satisfies the following laws:  s   t =  (st) ""  x = x, if x non-empty8The side condition on the last law is necessary because  "" has height 1, while  has no height.prettySame as text". Used to be used for Bytestrings.prettySome text with any width. (text s = sizedText (length s) s)prettySome text, but without any width. Use for non-printing text such as a HTML or Latex tagspretty2The empty document, with no height and no width.  is the identity for , ,  and ), and anywhere in the argument list for , , , ,  etc.prettyReturns  if the document is emptyprettyApply  to  if boolean is true.prettyApply  to  if boolean is true.prettyApply  to  if boolean is true.prettyApply  to  if boolean is true.prettyApply  to  if boolean is true.pretty*Perform some simplification of a built up GDoc.prettyList version of .prettyList version of .prettyList version of .prettyNest (or indent) a document by a given number of positions (which may also be negative).  satisfies the laws:  0 x = x  k ( k' x) =  (k+k') x  k (x  y) =  k x   k y  k (x  y) =  k x   k y  k  = x   k y = x  y, if x non-empty6The side condition on the last law is needed because  is a left identity for .pretty "hang d1 n d2 = sep [d1, nest n d2]pretty punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]prettyAbove, 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 , and also satisfies(x  y)  z = x  (y  z), if y non-empty.prettyAbove, with no overlapping.  is associative, with identity .pretty Beside.  is associative, with identity .pretty;Beside, separated by space, unless one of the arguments is .  is associative, with identity .prettyEither  or .prettyEither  or .pretty"Paragraph fill" version of .pretty"Paragraph fill" version of .prettyfirst returns its first argument if it is non-empty, otherwise its second.pretty Render the Doc to a String using the default Style (see J).pretty Render the Doc to a String using the given Style.prettyDefault TextDetails printer.pretty5The general rendering interface. Please refer to the Style and Mode types for a description of rendering mode, line length and ribbons.prettyA ';' characterprettyA ',' characterprettyA : characterprettyA space characterprettyA '=' characterprettyA '(' characterprettyA ')' characterprettyA '[' characterprettyA ']' characterprettyA '{' characterprettyA '}' characterpretty int n = text (show n)pretty integer n = text (show n)pretty float n = text (show n)pretty double n = text (show n)pretty rational n = text (show n)prettyWrap document in '...'prettyWrap document in "..."prettyWrap document in (...)prettyWrap document in [...]prettyWrap document in {...}prettyRendering mode.pretty Line length.prettyRibbons per line.prettyWhat to do with text.prettyWhat to do at the end.pretty The document.prettyResult. J J 5566"(c) The University of Glasgow 2001 BSD-style (see the file LICENSE)!David Terei stableportableSafe8=w= J= J (c) Lennart Augustsson 2014 BSD-style (see the file LICENSE)!David Terei stableportableSafe8@prettyPretty printing class. The precedence level is used in a similar way as in the . class. Minimal complete definition is either  or .prettyLevel of detail in the pretty printed output. Level 0 is the least detail.pretty!The "normal" (Level 0) of detail.prettyPretty print a value with the  level.pretty-Parenthesize an value if the boolean is true.   J       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsttuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNPQRZ\`]^_jpqrsttuvwxyz{|}~pretty-1.1.3.6Text.PrettyPrint.Annotated#Text.PrettyPrint.Annotated.HughesPJ(Text.PrettyPrint.Annotated.HughesPJClassText.PrettyPrintText.PrettyPrint.HughesPJText.PrettyPrint.HughesPJClassSpan spanStart spanLengthspanAnnotationModePageMode ZigZagModeLeftMode OneLineModeStylemode lineLengthribbonsPerLine TextDetailsChrStrPStr AnnotDetails AnnotStartNoAnnotAnnotEndDocannotatechartextptext sizedText zeroWidthTextemptyisEmptysemicommacolonspaceequalslparenrparenlbrackrbracklbracerbraceintintegerfloatdoublerationalquotes doubleQuotesparensbracketsbraces maybeParens maybeBrackets maybeBraces maybeQuotesmaybeDoubleQuotes reduceDochcathsepvcatnesthang punctuate$$$+$<><+>sepcatfcatfsepfirststylerender renderStyle fullRender fullRenderAnn renderSpansrenderDecoratedrenderDecoratedM$fNFDataTextDetails$fNFDataAnnotDetails$fFunctorAnnotDetails $fNFDataDoc $fFunctorDoc$fEqDoc $fIsStringDoc $fMonoidDoc$fSemigroupDoc $fShowDoc $fFunctorSpan $fShowSpan$fEqSpan $fShowStyle $fEqStyle$fGenericStyle $fShowMode$fEqMode $fGenericMode $fGenericDoc$fShowAnnotDetails$fEqAnnotDetails$fShowTextDetails$fEqTextDetails$fGenericTextDetailsPretty pPrintPrecpPrint pPrintList PrettyLevel prettyNormal prettyShow prettyParen$fPretty(,,,,,,,)$fPretty(,,,,,,)$fPretty(,,,,,)$fPretty(,,,,) $fPretty(,,,) $fPretty(,,) $fPretty(,) $fPretty[]$fPrettyEither $fPrettyMaybe $fPrettyChar$fPrettyOrdering $fPrettyBool $fPretty()$fPrettyDouble $fPrettyFloat$fPrettyInteger $fPrettyInt$fEqPrettyLevel$fOrdPrettyLevel$fShowPrettyLevelsOffsetsStacksSpanssOutputbaseGHC.BaseStringRDocEmptyNilAbove TextBesideNestUnionNoDocBesideAbove++ghc-prim GHC.TypesTrueindent textBeside_ txtPrinterGHC.ShowShow