h,A<^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*(c) Trevor Elliott 2015 BSD-style (see the file LICENSE)!David Terei stableportableSafe=!Collected output.Collected annotation regions.Currently open spans.,Current offset from the end of the document.A 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.Rendering mode.Normal rendering (  and   respected').With zig-zag cuts.'No indentation, infinitely long lines ( * ignored), but explicit new lines, i.e., text "one" $$ text "two", are respected. All on one line,  " ignored and explicit new lines ($$) are turned into spaces. A rendering style. Allows us to specify constraints to choose among the many different rendering options. Ratio 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. (Maximum length of a line, in characters.The rendering mode.A TextDetails represents a fragment of text that will be output at some point in a Doc.A single Char fragmentA whole String fragmentUsed to represent a Fast String fragment but now deprecated and identical to the Str constructor.An 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).RDoc is a "reduced GDoc", guaranteed not to have a top-level Above or Beside.3The abstract type of documents. A Doc represents a set of layouts. A Doc with no occurrences of Union or NoDoc represents just one layout.An empty span, see . text "" $$ x. text s <> x.nest k x.ul union ur.The empty set of documents.True  = space between.True  = never overlap.#Attach an annotation to a document.A document of height and width 1, containing a literal character.5A 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.Same as text". Used to be used for Bytestrings.Some text with any width. (text s = sizedText (length s) s)Some text, but without any width. Use for non-printing text such as a HTML or Latex tags2The 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.Returns  if the document is empty3Produce spacing for indenting the amount specified.an old version inserted tabs being 8 columns apart in the output.5Apply 2 to  if boolean is true.6Apply 3 to  if boolean is true.7Apply 4 to  if boolean is true.8Apply 0 to  if boolean is true.9Apply 1 to  if boolean is true.:*Perform some simplification of a built up GDoc.;List version of C.<List version of D.=List version of A.>Nest (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.? "hang d1 n d2 = sep [d1, nest n d2]@ punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]&Arg of a TextBeside is always an RDoc.AAbove, 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.BAbove, with no overlapping. B is associative, with identity .C Beside. C is associative, with identity .D;Beside, separated by space, unless one of the arguments is . D is associative, with identity .EEither < or =.FEither ; or =.G"Paragraph fill" version of F.H"Paragraph fill" version of E.Ifirst returns its first argument if it is non-empty, otherwise its second.JThe default style (1mode=PageMode, lineLength=100, ribbonsPerLine=1.5).K Render the Doc to a String using the default Style (see J).L Render the Doc to a String using the given Style.Default TextDetails printer.M5The general rendering interface. Please refer to the Style and Mode types for a description of rendering mode, line length and ribbons.NThe general rendering interface, supporting annotations. Please refer to the Style and Mode types for a description of rendering mode, line length and ribbons.ORender an annotated Doc* to a String and list of annotations (see ) using the default Style (see J).PRender 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.QRender 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. A ';' character!A ',' character"A : character#A space character$A '=' character%A '(' character&A ')' character'A '[' character(A ']' character)A '{' character*A '}' character+ 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)0Wrap document in '...'1Wrap document in "..."2Wrap document in (...)3Wrap document in [...]4Wrap document in {...}MRendering mode. Line length.Ribbons per line.What to do with text.What to do at the end. The document.Result.NRendering mode. Line length.Ribbons per line.What to do with text.What to do at the end. The document.Result.PStarting an annotation.Ending an annotation.QStarting an annotation.Ending an annotation.Text formatting. Document end.ABDC43F"!.1$GI-HMN?;<+,)'%76958>2@0/*(:KPQOL& E#J=   +,-./ !"#$%&'()*2340156789CD;?@I:KOPQ  JL MNABC D *(c) Trevor Elliott 2015 BSD-style (see the file LICENSE)!David Terei stableportableSafe=#ABDC43F"!.1$G-HMN?;<+,)'%>2@0/*(KOL& E#J=   +,-./ !"#$%&'()*23401CD;?@KO  JLMN *(c) Trevor Elliott 2015 BSD-style (see the file LICENSE)!David Terei stableportableSafe=%kPretty printing class. The precedence level is used in a similar way as in the . class. Minimal complete definition is either l or m.oLevel of detail in the pretty printed output. Level 0 is the least detail.q!The "normal" (Level 0) of detail.rPretty print a value with the q level.s-Parenthesize an value if the boolean is true. u v tABDC43F"!.1$GI-HMN?;<+,)'%76958>2@0/*(:KPQOL& E#J=qsr   kmnlop klmntuvopqrs"(c) The University of Glasgow 2001 BSD-style (see the file LICENSE)!David Terei stableportableSafe=7"RDoc is a "reduced GDoc", guaranteed not to have a top-level Above or Beside.3The abstract type of documents. A Doc represents a set of layouts. A Doc with no occurrences of Union or NoDoc represents just one layout.A document of height and width 1, containing a literal character.5A 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.Same as text". Used to be used for Bytestrings.Some text with any width. (text s = sizedText (length s) s)Some text, but without any width. Use for non-printing text such as a HTML or Latex tags2The empty document, with no height and no width.  is the identity for , ,  and ), and anywhere in the argument list for , , , ,  etc.Returns  if the document is emptyApply  to  if boolean is true.Apply  to  if boolean is true.Apply  to  if boolean is true.Apply  to  if boolean is true.Apply  to  if boolean is true.*Perform some simplification of a built up GDoc.List version of .List version of .List version of .Nest (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 . "hang d1 n d2 = sep [d1, nest n d2] punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]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 , and also satisfies(x  y)  z = x  (y  z), if y non-empty.Above, with no overlapping.  is associative, with identity . Beside.  is associative, with identity .;Beside, separated by space, unless one of the arguments is .  is associative, with identity .Either  or .Either  or ."Paragraph fill" version of ."Paragraph fill" version of .first returns its first argument if it is non-empty, otherwise its second. Render the Doc to a String using the default Style (see J). Render the Doc to a String using the given Style.Default TextDetails printer.5The general rendering interface. Please refer to the Style and Mode types for a description of rendering mode, line length and ribbons.A ';' characterA ',' characterA : characterA space characterA '=' characterA '(' characterA ')' characterA '[' characterA ']' characterA '{' characterA '}' character 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)Wrap document in '...'Wrap document in "..."Wrap document in (...)Wrap document in [...]Wrap document in {...}Rendering mode. Line length.Ribbons per line.What to do with text.What to do at the end. The document.Result.J     J   "(c) The University of Glasgow 2001 BSD-style (see the file LICENSE)!David Terei stableportableSafe=8=J   =  J (c) Lennart Augustsson 2014 BSD-style (see the file LICENSE)!David Terei stableportableSafe=;Pretty printing class. The precedence level is used in a similar way as in the . class. Minimal complete definition is either  or .Level of detail in the pretty printed output. Level 0 is the least detail.!The "normal" (Level 0) of detail.Pretty print a value with the  level.-Parenthesize an value if the boolean is true.   J          !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzz{|}   ~"$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTVWX`bfcdepvwxyzz{|}   ~pretty-1.1.3.6-647cText.PrettyPrint.Annotated#Text.PrettyPrint.Annotated.HughesPJ(Text.PrettyPrint.Annotated.HughesPJClassText.PrettyPrintText.PrettyPrint.HughesPJText.PrettyPrint.HughesPJClass56 $dmpPrint $dmpPrintList $dmpPrintPrecSpanspanAnnotation spanLength spanStartModePageMode ZigZagModeLeftMode OneLineModeStyleribbonsPerLine lineLengthmode 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$fPrettyTuple8$fPrettyTuple7$fPrettyTuple6$fPrettyTuple5$fPrettyTuple4$fPrettyTuple3$fPrettyTuple2 $fPrettyList$fPrettyEither $fPrettyMaybe $fPrettyChar$fPrettyOrdering $fPrettyBool $fPrettyUnit$fPrettyDouble $fPrettyFloat$fPrettyInteger $fPrettyInt$fEqPrettyLevel$fOrdPrettyLevel$fShowPrettyLevelSpanssOutputsSpanssStacksOffset ghc-internalGHC.Internal.BaseStringRDocEmptyNilAbove TextBesideNestUnionNoDocBesideAbove++ghc-prim GHC.TypesTrueindent textBeside_ txtPrinterGHC.Internal.ShowShow