úÎOƒI—?      !"#$%&'()*+,-./0123456789:;<=>"(c) The University of Glasgow 2001 BSD-style (see the file LICENSE)"David Terei <dave.terei@gmail.com>stableportableSafe,Rendering mode.NormalWith zig-zag cuts%No indentation, infinitely long linesAll on one lineA rendering style.The rendering modeLength of line, in chars %Ratio of line length to ribbon length The TextDetails data typeOA TextDetails represents a fragment of text that will be output at some point. A single Char fragment A whole String fragment gUsed to represent a Fast String fragment but now deprecated and identical to the Str constructor.?MRDoc is a "reduced GDoc", guaranteed not to have a top-level Above or Beside.ŽThe abstract type of documents. A Doc represents a *set* 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 4  t =  (s@t) "" 4 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 4, 5, 2 and 3), and anywhere in the argument list for 6, ,, -, ., 8 etc.Returns A if the document is emptyB3Produce spacing for indenting the amount specified.Aan old version inserted tabs being 8 columns apart in the output.+*Perform some simplification of a built up GDoc.,List version of 4.-List version of 5..List version of 2./[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 4 y) = / k z 4 / k y / k (x 2 y) = / k x 2 / k y / k  = x 4 / k y = x 4 y, if x non-empty6The side condition on the last law is needed because  is a left identity for 4.0 "hang d1 n d2 = sep [d1, nest n d2]1 @punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]2±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 there2 is associative, with identity , and also satisfies(x 2 y) 4 z = x 2 (y 4 z), if y non-empty.3Above, with no overlapping. 3 is associative, with identity .4 Beside. 4 is associative, with identity .5;Beside, separated by space, unless one of the arguments is . 5 is associative, with identity .6Either - or ..7Either , or ..8"Paragraph fill" version of 7.9"Paragraph fill" version of 6.:firstE returns its first argument if it is non-empty, otherwise its second.;The default style (1mode=PageMode, lineLength=100, ribbonsPerLine=1.5).< Render the Doc to a String using the default Style.= Render the Doc to a String using the given Style.CDefault TextDetails printer> The general rendering interface.r ?DEFGHIJKBA ';' characterA ',' characterA : characterA space characterA '=' characterA '(' characterA ')' characterA '[' characterA ']' characterA '{' character A '}' characterLM! 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 {...}+,-./01NOPQRSTUV23WXYZ45[\]67^_`89abcdefghi:jk;<=C>Rendering mode Line lengthRibbons per lineWhat to do with textWhat to do at the end The documentResultlmnopqrs?  !"#$%&'()*+,-./0123456789:;<=>? !"#$% ()*&'45,-23.6798/01:+< ;=>_  ?DEFGHIJKB LM!"#$%&'()*+,-./01NOPQRSTUV23WXYZ45[\]67^_`89abcdefghi:jk;<=C>lmnopqrs2345"(c) The University of Glasgow 2001 BSD-style (see the file LICENSE)"David Terei <dave.terei@gmail.com>stableportableSafe=  !"#$%&'()*,-./0123456789;<=>=!"#$% ()*&'45,-23.6798/01< ;=> t      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzprett_J45nArvvs289UR95Cem5YcText.PrettyPrintText.PrettyPrint.HughesPJModePageMode ZigZagModeLeftMode OneLineModeStylemode lineLengthribbonsPerLine TextDetailsChrStrPStrDocchartextptext sizedText zeroWidthTextemptyisEmptysemicommacolonspaceequalslparenrparenlbrackrbracklbracerbraceintintegerfloatdoublerationalquotes doubleQuotesparensbracketsbraces reduceDochcathsepvcatnesthang punctuate$$$+$<><+>sepcatfcatfsepfirststylerender renderStyle fullRenderRDocbaseGHC.Base++ghc-prim GHC.TypesTrueindent txtPrinterEmptyNilAbove TextBesideNestUnionNoDocBesideAbove space_textnl_textmkNestmkUnionbeside_'above_'reduceAB nilAbove_ textBeside_nest_union_above_above aboveNest nilAboveNestbeside_beside nilBesidesepXsep1sepNBfillfill1fillNBfillNBE elideNestbestnicestnicest1fits nonEmptySetoneLiner easy_displaydisplay$fNFDataTextDetails $fNFDataDoc$fEqDoc $fShowDoc $fIsStringDoc $fMonoidDoc