śĪßQŠNć      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįā*(c) Trevor Elliott <revor@galois.com> 2015 BSD-style (see the file LICENSE)!David Terei <code@davidterei.com>stableportableSafe5Eć,Current offset from the end of the document.äCurrently open spans.åCollected annotation regions.ęCollected output.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. jA rendering style. Allows us to specify constraints to choose among the many different rendering options. The rendering mode. (Maximum length of a line, in characters.TRatio 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.TA TextDetails represents a fragment of text that will be output at some point in a Doc.A single Char fragmentA whole String fragmentgUsed to represent a Fast String fragment but now deprecated and identical to the Str constructor.BAn annotation (side-metadata) attached at a particular point in a Doc7. Allows carrying non-pretty-printed data around in a DocC 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).čMRDoc is a "reduced GDoc", guaranteed not to have a top-level Above or Beside.3The abstract type of documents. A Doc represents a setU 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.AA 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 =  (sńt) "" 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)YSome 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 emptyó3Produce spacing for indenting the amount specified.Aan 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.A±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 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.IfirstF 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 ModeE types for a description of rendering mode, line length and ribbons.NNThe general rendering interface, supporting annotations. Please refer to the Style and ModeE 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).PURender 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.Q‘Render 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 {...}56789:;<=>?@ž’ōAB CD   EF GHIJKLõ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.OPStarting an annotation.Ending an annotation.QStarting an annotation.Ending an annotation.Text formatting. Document end.RSTUVWXYZ[\R  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR+,-./ !"#$%&'()*2340156789CD;<AB=EFHG>?@I:KOPQ JL MNsö÷ćäåę  ųłśčéźėģķīļšūó !"#$%&'()*üż+,-./0123456789:;<=>?@ž’ōAB CD   EF GHIJKLõMNOPQRSTUVWXYZ[\A5B5C6D6*(c) Trevor Elliott <revor@galois.com> 2015 BSD-style (see the file LICENSE)!David Terei <code@davidterei.com>stableportableSafe5kPPretty printing class. The precedence level is used in a similar way as in the . class. Minimal complete definition is either l or m.oKLevel 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.klmnopqrstuvwxyz{|}~€‚ƒ„…[  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQklmnopqrs klmnopqrsklmnopqrstuvwxyz{|}~€‚ƒ„…*(c) Trevor Elliott <revor@galois.com> 2015 BSD-style (see the file LICENSE)!David Terei <code@davidterei.com>stableportableSafe5E  !"#$%&'()*+,-./01234;<=>?@ABCDEFGHJKLMNOE+,-./ !"#$%&'()*23401CD;<AB=EFHG>?@KO JLMN "(c) The University of Glasgow 2001 BSD-style (see the file LICENSE)!David Terei <code@davidterei.com>stableportableSafe5" NRDoc is a "reduced GDoc", guaranteed not to have a top-level Above or Beside.‰3The abstract type of documents. A Doc represents a setU of layouts. A Doc with no occurrences of Union or NoDoc represents just one layout.ŠAA 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 = ‹ (sńt)‹ "" “ 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)ŽYSome text, but without any width. Use for non-printing text such as a HTML or Latex tags2The 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 empty¦Apply £ 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 ¶.ŗfirstE 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 ModeE types for a description of rendering mode, line length and ribbons.@ ‰"#$Š‹ŒŽ‘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)”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.¾æĄĮĀĆD J‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½D‰Š‹ŒŽœžŸ ‘’“”•–—˜™š›£¤„”¢¦§Ø©Ŗ“µ¬­²³®¶·¹øÆ°±ŗ«» J¼ ½? ‰"#$Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼!½¾æĄĮĀò5³5“6µ6(c) Lennart Augustsson 2014 BSD-style (see the file LICENSE)!David Terei <code@davidterei.com>stableportableSafe5ÅPPretty printing class. The precedence level is used in a similar way as in the . class. Minimal complete definition is either Ę or Ē.ÉKLevel 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.ÅĘĒČÉŹĖĢ%&ĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßM J‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½ÅĘĒČÉŹĖĢĶ ÅĘĒČÉŹĖĢĶÅĘĒČÉŹĖĢ%&ĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽß"(c) The University of Glasgow 2001 BSD-style (see the file LICENSE)!David Terei <code@davidterei.com>stableportableSafe5= J‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¬­®Æ°±²³“µ¶·ø¹»¼½=‰Š‹ŒŽœžŸ ‘’“”•–—˜™š›£¤„”¢“µ¬­²³®¶·¹øÆ°±» J¼½ '      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsttuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNPQRZ\]^_`gpqrsttuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œ‘’žŸ ”¢£¤¤„„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒȑÉŹĖĢ”£ĶĪĖĢĻ$pretty-1.1.3.4-K77ZSgeH3ZPsiXHTjZtVcText.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 $fFunctorSpan$fNFDataTextDetails$fNFDataAnnotDetails $fNFDataDoc $fFunctorDoc$fEqDoc $fShowDoc $fIsStringDoc $fMonoidDoc$fSemigroupDoc$fFunctorAnnotDetails$fShowTextDetails$fEqTextDetails$fGenericTextDetails$fShowAnnotDetails$fEqAnnotDetails $fGenericDoc $fShowMode$fEqMode $fGenericMode $fShowStyle $fEqStyle$fGenericStyle $fShowSpan$fEqSpanPretty 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_ txtPrinterSpansIsEmptyNotEmpty annotSize spaceTextnlTextmkNestmkUnion reduceHoriz reduceVerteliminateEmpty nilAbove_nest_union_above_above aboveNest nilAboveNestbeside_beside nilBesidesepXsep1sepNBfillfill1fillNBfillNBE elideNestbestnicestnicest1fits nonEmptySetoneLiner easyDisplaydisplayGHC.ShowShowpPrint0appPrecliftList liftBinary