_1WWM      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL"(c) The University of Glasgow 2001 BSD-style (see the file LICENSE)!David Terei <code@davidterei.com>stableportableSafe01Rendering 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.MMRDoc 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 9  t =  (sNt) "" 9 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 9, :, 7 and 8), and anywhere in the argument list for ;, 1, 2, 3, = etc.Returns O if the document is emptyP3Produce spacing for indenting the amount specified.Aan old version inserted tabs being 8 columns apart in the output.+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.0*Perform some simplification of a built up GDoc.1List version of 9.2List version of :.3List version of 7.4[Nest (or indent) a document by a given number of positions (which may also be negative). 4 satisfies the laws: 4 0 x = x 4 k (4 k' x) = 4 (k+k') x 4 k (x 9 y) = 4 k z 9 4 k y 4 k (x 7 y) = 4 k x 7 4 k y 4 k  = x 9 4 k y = x 9 y, if x non-empty6The side condition on the last law is needed because  is a left identity for 9.5 "hang d1 n d2 = sep [d1, nest n d2]6 @punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]7Above, 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 there7 is associative, with identity , and also satisfies(x 7 y) 9 z = x 7 (y 9 z), if y non-empty.8Above, with no overlapping. 8 is associative, with identity .9 Beside. 9 is associative, with identity .:;Beside, separated by space, unless one of the arguments is . : is associative, with identity .;Either 2 or 3.<Either 1 or 3.="Paragraph fill" version of <.>"Paragraph fill" version of ;.?firstE returns its first argument if it is non-empty, otherwise its second.@The default style (1mode=PageMode, lineLength=100, ribbonsPerLine=1.5).A Render the Doc to a String using the default Style.B Render the Doc to a String using the given Style.QDefault TextDetails printerC The general rendering interface.z RST MUVWXYZ[\PA ';' characterA ',' characterA : characterA space characterA '=' characterA '(' characterA ')' characterA '[' characterA ']' characterA '{' 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 {...}+,-./0123456_`abcdefg78hijk9:lmn;<opq=>rstuvwxyz?{|@ABQCRendering mode Line lengthRibbons per lineWhat to do with textWhat to do at the end The documentResult}~D  !"#$%&'()*+,-./0123456789:;<=>?@ABCD !"#$% ()*&'+,-./9:12783;<>=456?0A @BCe RST  MUVWXYZ[\P ]^!"#$%&'()*+,-./0123456_`abcdefg78hijk9:lmn;<opq=>rstuvwxyz?{|@ABQC}~789:(c) Lennart Augustsson 2014 BSD-style (see the file LICENSE)!David Terei <code@davidterei.com>stableportableSafe0DPPretty printing class. The precedence level is used in a similar way as in the . class. Minimal complete definition is either E or F.HKLevel of detail in the pretty printed output. Level 0 is the least detail.J!The "normal" (Level 0) of detail.KPretty print a value with the J level.L-Parenthesize an value if the boolean is true.DEFGHIJKLM  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL DEFGHIJKLDEFGHIJKL"(c) The University of Glasgow 2001 BSD-style (see the file LICENSE)!David Terei <code@davidterei.com>stableportableSafe0=  !"#$%&'()*123456789:;<=>@ABC=!"#$% ()*&'9:12783;<>=456A @BC        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKKLMNOPQRSTUVWXXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Pprett_FbE9sX9X36hBxj6gjRcOM5Text.PrettyPrintText.PrettyPrint.HughesPJText.PrettyPrint.HughesPJClassModePageMode ZigZagModeLeftMode OneLineModeStylemode lineLengthribbonsPerLine TextDetailsChrStrPStrDocchartextptext sizedText zeroWidthTextemptyisEmptysemicommacolonspaceequalslparenrparenlbrackrbracklbracerbraceintintegerfloatdoublerationalquotes doubleQuotesparensbracketsbraces maybeParens maybeBrackets maybeBraces maybeQuotesmaybeDoubleQuotes reduceDochcathsepvcatnesthang punctuate$$$+$<><+>sepcatfcatfsepfirststylerender renderStyle fullRenderPretty pPrintPrecpPrint pPrintList PrettyLevel prettyNormal prettyShow prettyParenRDocbaseGHC.Base++ghc-prim GHC.TypesTrueindent txtPrinterIsEmptyNotEmptyEmptyNilAbove TextBesideNestUnionNoDocBesideAbove spaceTextnlTextmkNestmkUnion reduceHoriz reduceVerteliminateEmpty nilAbove_ textBeside_nest_union_above_above aboveNest nilAboveNestbeside_beside nilBesidesepXsep1sepNBfillfill1fillNBfillNBE elideNestbestnicestnicest1fits nonEmptySetoneLiner easyDisplaydisplay$fNFDataTextDetails $fNFDataDoc$fEqDoc $fShowDoc $fIsStringDoc $fMonoidDocGHC.ShowShowpPrint0appPrec$fPretty(,,,,,,,)$fPretty(,,,,,,)$fPretty(,,,,,)$fPretty(,,,,) $fPretty(,,,) $fPretty(,,) $fPretty(,) $fPretty[]$fPrettyEither $fPrettyMaybe $fPrettyChar$fPrettyOrdering $fPrettyBool $fPretty()$fPrettyDouble $fPrettyFloat$fPrettyInteger $fPrettyInt