HOOG }$+<>a  #$))+-11448:b ,-00c )),-4499d  "#./88::e  &(*,,.468::fg##::hi ""&&++002288::jk--l ""++/06688m  "#22::n !"$$&&))++.1o  "#*+00::p#)0134q **r $'+155s  !!$$''**/02688t  !!%+//59u )*v99x((78y%&//66z::{zx!cj()5-> AllAnyArithExceptionArrayExceptionAsyncExceptionBoolt BufferModeb BufferState^CCharCClockCDevCDoubleYCFloatCInoCIntpCIntMax(CIntPtrCLDoubleCLLong?CLongCModeCOffgCPidCPtrdiffCSCharCShortG CSigAtomicCSizeCSsizeoCTime=CUCharCUIntCUIntMaxeCUIntPtrCULLongCULongCUShortECWcharChanCharComplex ConsoleEventConstr} ConstrReptDataRepkDataTypeWDocQDoubleDynamicE12E6Errno ExceptionExitCodeFDTypeFdZFixityQFloatGeneralCategoryHandle HandlePosn HandleTypeHashDataIO IOErrorType} IOExceptiontIOModeZIdEInsertsAIntInt16Int32NInt64Int8IntPtrdInteger$LexemeMaybe Ordering P QSem~ QSemNt ReadP[ ReadPrecB STM) SeekMode StableName TVar ThreadId Timeout TyCon TypeRep Unique Version Weak WordF Word16 Word32 Word64S Word8 WordPtr ZipList [::] []G  TraversableFoldableMonadFix Applicative Alternative MonadPlusFunctorMonadFunctorMonadFunctor Applicative ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq PrintfArgStorableDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEq PrintfArgStorableDataEqOrdNumEnumIntegralBitsShowRealBoundedIxRead PrintfArgStorableDataNumEnumIntegralBitsShowRealBoundedIxReadOrdEq PrintfArgStorableDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEq PrintfArgStorableDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEq Typeable1EqOrdShowReadTypeableOrdEqDataDataEqTypeableDataShowEqOrdTypeable Typeable1 Typeable1ShowReadEnumIxOrdEq Typeable1FunctorMonadFunctorMonad MonadPlusFunctorMonad MonadPlusTypeableTypeableMonad MonadPlus MonoidDataReadShowBoundedEnumIxOrdEq TraversableFoldableMonadFix Applicative AlternativeFunctorMonad MonadPlusShowEqRead PrintfArgBitsDataReadEqOrdNumEnumShowIxRealIntegral ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq PrintfArgStorableDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEq PrintfArgStorableDataEqOrdShowNumEnumIntegralReadBitsRealBoundedIx PrintfArgStorableDataShowNumEnumIntegralReadBitsRealBoundedIxOrdEq PrintfArgStorableDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEq PrintfArgBitsStorableDataReadShowNumBoundedEnumIxRealIntegralEqOrdEqFunctor ApplicativeShowReadEnumIxOrdEqEqShowEqShowMonadFix ApplicativeFunctorMonadShowEqShowEqShowDataEqShowIxBoundedShowReadEnumOrdEq PrintfArgStorableDataEqOrdNumReal FractionalRealFracFloating RealFloatShowEnumReadShowEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqEqShowReadOrdEqShowEqEq HasResolution HasResolutionTypeableShow PrintfArgStorableDataEqOrdNumReal FractionalFloatingRealFrac RealFloatShowEnumReadShowTypeableDataShowShowEqShowEqShowEqReadShowEnumOrdEqTypeable Typeable1 PrintfArgIsCharStorableDataReadShowBoundedEnumIxEqOrd Typeable1 ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqEqShowReadOrdEq StorableDataReadShowBoundedEnumIxOrdEqShowOrdEqShowOrdEqShowOrdEqMonoidBoundedShowReadOrdEqMonoidBoundedShowReadOrdEqArrow ArrowChoice ArrowApply ArrowLoop MonoidDataReadShowBoundedEnumIxEqOrdg4 ByteCount!CDir!CDirent!CFLock!CGroup!CLconv!CPasswd! CSigaction!CSigset!CStat~!CStringo! CStringLenT!CTermiosO!CTmJ!CTmsE!CUtimbuf@!CUtsname;!CWString+! CWStringLen! ClockTick!ConIndex!DeviceID EpochTime FD FileID FileMode FileOffset FilePath FinalizerEnvPtr FinalizerPtrq Generica GenericB] GenericMM GenericQB GenericR7 GenericT. HandlePosition$ IOError IPr LimitMicroPicoPrecProcessGroupID ProcessIDRational RawBufferReadSjSTRep= SampleVarShowSString[]Char[]Char[]CharaMVar(,)IntMVarasaState#s(#,#)State#saa[]Char[](,)a[]CharMutableByteArray# RealWorldRatioIntegerCPidCPidIntFixedE12FixedE6CLong(,)IntInt IOExceptionIntegeraammararmamaacacaaFunPtrPtraIO()envaFunPtrPtrenvPtraIO()[]CharCOffCModeCInoCIntCTimeCDevIntCClock(,)PtrCWcharIntPtrCWchar()()()()()(,)PtrCCharIntPtrCChar()()()()()()()()()CSize(x:x[Oxa5rbncbdN^e2[f3UgShPi,JjIkIlFmCn@o#=p8q8rH2sk,t(u-&v%w"z<"iC"g|"pO"lV"i]"sd"tk"ZipListz"a"g"m"o"d"e"Mode#%1%3%6%8%eX%o$r"a#i"t"e"b`#h-#m #o#d#e!#IOModea4#n;#dB#lI#eP# HandleTypeug#fn#fu#e|#r# BufferStatep#aX$m*$p#e#d#a#m#o#n#a#d# WrappedMonadr#r$o $w$ WrappedArrowo1$n8$a?$dF$ WrappedMonadr_$rf$om$wt$ WrappedArrowr$d$Word#I%12%3%6$8$p$t$r$WordPtrWord84$Word64# %Word64#2"%Word3269%Word16Word#a_%kf%Weak#y%Weak##%Word84%#%Word642%#%Word326%#%Word16Worde%r&s&i&o&n&Versionn&p&s>&eE&rL&eS&rZ&ra&oh&ro& IOErrorTypep&e&r&c&a&s&e&l&e&t&t&e&r&GeneralCategorydU(i(s'a'u 'p'p'o"'r)'t0'e7'd>'oE'pL'eS'rZ'aa'th'io'ov'n}' IOErrorTypet'i's'f'i'e'd'c'o'n's't'r'a'i'n't(s ( IOErrorTypeq7(t)(Unitu>(eE(Uniquee\(f(rh(fo(lv(o}(w(ArithExceptioni(n(e(d(e(l(e(m(e(n(t(ArrayExceptione,h+i*r_*vC*y)c&*p%)e,)aW)r8)e?)pF)TypeRepb^)le)el)Typeable1*2*3)4)5)6)7) Typeable7 Typeable6 Typeable5 Typeable4 Typeable3 Typeable2 Typeable1o-*n4*TyConaJ*rQ*TVara|*uk*er*Boolv*e*r*s*a*b*l*e* Traversablem>+t*l*e*c*a*s*e*l+e +t+t+e"+r)+GeneralCategoryeE+eL+xS+pZ+ia+rh+eo+dv+ IOErrorTyper+e+a+d+i+k+i+l+l+e+d+AsyncExceptiond+ThreadId#, ThreadId#x,t%,d,,e3,t:,aA,iH,lO,sV, TextDetails#;2a1e1h0p/tc-u -y,m,s,t,e,m,e,r,r,o,r, IOErrorTypeb,o,l,LexememV-r-r-o%-g,-a3-t:-eA-GeneralCategorySumSTa.m.o.r-y-l-e-Style TextDetailse5.i-n-g-Stringc.r-e-p-DataRepo .n.s.t.r&. ConstrRepax.fi.pZ.tK.STretSTRepSTRefm.FDTyper.a.b.l.e.StorableSTMbz/c'/r/t.e.#.State#r/a/y/STArrayk./o5/vt=vM=eT=r[=fb=li=op=ww=ArithExceptionh=e=r=e>l>nN>p=s=y=m=b=o=l=GeneralCategoryu=n>c>t>u>a>t$>i+>o2>n9>GeneralCategoryuU>m\>bc>ej>rq>GeneralCategorye>t>t>e>r>GeneralCategoryr>r>o>r> IOErrorTyped>Orde?r ?i?n?g ?Orderinga#@e?tC?a?dp?iT?o[?nb?OptDescrew?s~?c?r?OptDescrr?g?ArgDescrn?p?u?n?c?t?u?a?t?i@o@n@GeneralCategoryq*@u1@e8@OpaqueeO@lV@i]@nd@ek@mr@oy@d@e@Modej@e@c@t@ObjecteRCo@u@m@Numa6CbBmBnArAsyAtAa3AhAiAn!Ag(AMaybes:AsAAiHAgOAnVAe]AddAGeneralCategoryuAcAhAtAhAiAnAgA IOErrorTypeeApADataReps>BtAeArAmAiBn BaBtBi!Bo(Bn/B ExceptionpEBaLBcSBiZBnaBghBmoBavBr}BkBGeneralCategoryeBtBhBoBdBeBrBrBoBrB ExceptionuBfBfCe CrCiCnCg&C BufferModer=CgDCArgDescrsYCt`CegCdnCauCt|CoCmCiCcCaClClCyC ExceptionapFiLFoDuDvCaCrCMVar#CMVar#tDaGDv!Da(Dr/D#6DMutVar#bNDlUDe\DaDbhDyoDtvDe}DaDrDrDaDyD#DMutableByteArray#rDrDaDyD#D MutableArray#dEnEa2EoEiEd"EMonoidd9EMonadfzEpRElYEu`EsgE MonadPlusiExEMonadFixe>FiEfEiEeErElFsEyEmEbEoElEGeneralCategorye FtFtFe"Fr)FGeneralCategoryModecSFrZFoaFMicrotFy|FbFeFMaybehFsFyFmFbFoFlFGeneralCategoryaIeHiHoGtFOrderinggGsGwGe Gr'Gc.Ga5GsHaEHrLHaSHtZHoaHrhHGeneralCategoryuHfHfHeHrHiHnHgH BufferModeiHtHLimitflItIxHeHmIeILexemetIe&Ir-In4Iu;ImBIbIIePIrWIGeneralCategorytsIEithermIoIdIeIModesItILastlIeIiIsIlIiIKleisli#JuJs JtJMaybeInteger #P1P3P6P8|Pd[Pg2PlOn+LoJpJs{JxoJIxcJsJtJrJiJnJgJIsStringhJaJrJIsCharrJIPrIOaKeWKm2KrKeKf#KIORefo9Kd@KeGKIOModerKxcKcjKeqKpxKtKiKoKnK IOExceptionrKoKrKIOErrortKyKpKeK IOErrorTyperLr LaLyLIOArrayaLOdNfNioNlfNr]NtLvULa\LlcLijLdqLaxLrLgLuLmLeLnLtL IOErrorTypeInt #ON19N3#N6M8McMe-MpMrLeLpMDataReptMrMIntPtrgtMr9Mr@MuGMpNMtUMe\MdcM IOErrorTypeeMrMaMlMIntegralrMIntegeroMnMsMtMrM ConstrRepInt84MInt64#NInt64#2*NInt326@NInt16Int#:+::+:tvNi}NaNlNqNuNoNtNeNGeneralCategoryiNxNFixityeNxNoNuNtOoOfObOoOu#On*Od1Os8OArrayExceptionpSOpZOraOohOpoOrvOi}OaOtOeOtOyOpOeO IOErrorTypelOeOgOaOlOoOpOeOrOaPt PiPoPn!P IOErrorTypen9Po@PrGPeNPHandlerebPniPtpPLexeme#PInt84P#PInt642P#PInt326P#PInt16IntaQeFQpPrPiQnQtQfQtQy#Qp*Qe1Q HPrintfTypeaMQpTQo[QvbQeiQrpQfwQl~QoQwQAsyncExceptionnRrIRsQhRrQeQsQoQlQuQtQiQoQnQ HasResolutiontRa!Rb(Rl/Re6R HashTabledPRwWRa^RreRelRfsRazRuRlRtR IOErrorTypedRlReRHandle_uSpSrStRyRpReR HandleTypeHandleroSs!SiASn-S HandlePosntHSiOSoVSn]SHandlePosition_|SHandle__eSmSqStSOrdering GenericQ' GenericM'nSeSrSaTiScSGeneric'TbTmTqcTrQTt'TGenericT'>T GenericT'GenericRGenericQ'zT GenericQ'GenericM'T GenericM'GenericBGeneric'lTcTaTtTeTgUo UrUyUGeneralCategory #'[a[dZfYiWlWoVrUubUniUcUpuUt|UrUFunPtrtUoUrUFunctoraUcUtUiUoUnUaUlU FractionallVrVe@VmVa$Vt+VGeneralCategoryiGVgNVnUVp\VtcVrjV ForeignPtrcVoVnVtVeVnVtVsVForeignPtrContentsdVaVbVlVeVFoldableo WaWtWFloat#WcxWiXWr=WeDWpKWDataRepn_WgfWFloatingoWnWsWtWrW ConstrRepFloat#lXn-XrXxWeWiWtWyWFixitydXFixedsXtXFirsta4Xl;XixXqGXuNXoUXt\XecXGeneralCategoryzXeXrXeXpXtXrX FinalizerPtrnXvXpXtXrXFinalizerEnvPtreYhYiYmyYoBYpYa"Yt)Yh0YFilePathfIYfPYsWYe^YteY FileOffsetoYdYeYFileModedYFileIDaYnYdYlYeYHandleeZf/ZgYeYnZe ZrZiZc!ZFFFormatiiZo;ZrBZmIZaPZtWZFFFormatxpZewZd~ZFFFormatxZpZoZnZeZnZtZFFFormatFDFdtZyZpZeZFDTypel[s[e[BoolFloat 1:^6.^i^nl]oY]p]q]r\xa[ch\im[tt[cA\e[f[s[u[c[c[e[s[s[ExitCodea[i[l[u[r[e[ExitCodex\c\e\p\t\i$\o+\n2\ ExceptionoH\dO\eV\ExitCodeeo\pv\t}\i\o\n\ Exceptionr\n\o\r\c\a\l\l\ Exceptiono\ErrnoOrderingEqo]c#]h*]t1]i8]m?]eF] EpochTimef`]Lexemec]d]u}]m]Enumo]Endol]o]s]i]n]g]m]a]r]k]GeneralCategoryt ^h^e^r^EitherE62A^E12#baae`i_o_u3_ys^nz^a _e^i^o^e^r^r^o^r^ IOErrorTypex^c^e^p^t^i^o^n^ Exceptionm_i_c"_Dynamica_p?_lF_eM_xT_h[_ab_ni_dp_lw_e~_Handlel_Dualc_u_b_l_e_Double#_Double#DocrR`v_i`d `e`b`y"`z)`e0`r7`o>`ArithExceptioneY`c``tg`on`ru`y|`FDTypeaac8afan`v`i`c`e`i`d`DeviceIDo`r`m`a`l`ArithExceptionaaual$at+aHandleri?amFaaMalTan[aubamiabpaewar~aGeneralCategorydalaoacaka Exceptions?btaaaDataDatar btaybpbebDataTypee'bp.bDataRephFbpMbuTbn[bcbbtibupbawbt~bibobnbGeneralCategoryDouble#nancYndmfAmgmhliEljllgjmCjoIhpgsfteucw cctcsctcr%ci,cn3cg:cCWStringlQceXcn_c CWStringLenh{cacrcCWcharcgeieldrNds!dtcicscncacmcecCUtsnamemcbdudfdCUtimbufh(do/dr6dt=dCUShortrUde\dncdcjdyqdsxdydmdbdodldGeneralCategoryldodndgdCULongodndgdCULLongneteCUIntmGep'et.er5eCUIntPtraNexUeCUIntMaxhneauer|eCUChareeiemeCTmseCTmsmeeeCTimeremeieoeseCTermioscghwgifsft*fafr6fi=fnDfgKfCStringlafehfnof CStringLentfCStatifzfefCSsizegfzfefCSizea gsfeftfCSigsetcGgtgogm%gi,gc3g CSigAtomictNgiUgo\gncg CSigactiono~grgtgCShorthgagrgCSCharahihtgrgdgigfgfgCPtrdiffdhCPids#hs*hw1hd8hCPasswdf.jmjnZhiinNishtphrwho~hlhGeneralCategorych ConsoleEventoithConstrhConstrrhehph ConstrReplieieiv#ie*in1it8i ConsoleEventeUic\itciojirqipxiuinicitiuiaitiiioiniGeneralCategorynidieixiConIndexpjljejxjComplexf5jCOffoJjdQjeXjCModeckdklko}jc\knFksjej ConsoleEventd kpjujnjcjtjujajtjijojnjGeneralCategoryhkakn!kd(kl/ke6k HandleTypegMkCLongkcktjkiqkcxkkk ClockTickoknkgkCLLongokukbklkekCLDoubleoknkvlCLconvmlplb&lu-lf4lCJmpBufnLloltXlCIntmlppltwlr~lCIntPtralxlCIntMaxCInoalrl TextDetailsnmrlChar#lChar#Chanrmo#mu*mp1mCGroupimlompRmoYms`mCFposovmamcmkmCFLocktmCFloatlmemCFileeDni nomumbmlmemCDoublernCDire%nn,nt3nCDirentvKnCDevhnlenolncsnkznCClockanrnCChartncnhnHandlerCharirlpopr~pusoyntneoaequalsemptyUempty doublequotesr doubleQuotesdoubledoubledocDoccommacomma colonσcolon chrChr charchar cat cat brackets bracketsbraces:braces<>N<><+>_<+>$+$q$+$$$$$=o l'ߟ,!}%#ٖ)j.ɔF-ˎ[ՍAk!ۊf{oL݅ ZigZagMode ZigZagMode :: ModeDžModeWith zig-zag cuts vcatvcat :: [Doc] -> Doc-[]DocDocList version of $$.  TextDetailsdata  TextDetailstexttext :: String -> DocԆĆStringDocA document of height 1 containing a literal string. text satisfies the following laws: The side condition on the last law is necessary because text "" has height 1, while empty has no height. stylestyle :: StyleStylePThe default style (mode=PageMode, lineLength=100, ribbonsPerLine=1.5). Style Style :: Mode -> Int -> Float -> Stylew[ModeIntFloatStyleStyledata StyleA rendering style. StrStr :: String ->  TextDetailsString TextDetailsspacespace :: DocPJDocA space character sepsep :: [Doc] -> Doc[]DocDoc#Either hsep or vcat. semisemi :: Doc DocA ';' character rparenrparen :: DocWQDocA ')' character ribbonsPerLineribbonsPerLine :: Style -> FloatϋStyleFloat&Ratio of ribbon length to line length  renderStyle renderStyle :: Style -> Doc -> StringmVStyleDocString9Render the document as a string using a specified style. renderrender :: Doc -> StringDocStringARenders the document as a string using the default style. rbrackrbrack :: DocwqDocA ']' character rbracerbrace :: DocDocA '}' character rationalrational :: Rational -> Doc/RationalDoc(
rational n = text (show n)
quotesquotes :: Doc -> DocDocDoc Wrap document in '...'  punctuate punctuate :: Doc -> [Doc] -> [Doc]A#Doc[]Doc[]Doc`
punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]
ptextptext :: String -> DocStringDoc4An obsolete function, now identical to text. PStrPStr :: String ->  TextDetailssString TextDetailsparensparens :: Doc -> DocېΐDocDoc Wrap document in (...) PageModePageMode :: Mode;4ModeNormal  OneLineMode OneLineMode :: ModeModeAll on one line nestnest :: Int -> Doc -> DocIntDocDocNest (or indent) a document by a given number of positions (which may also be negative). nest satisfies the laws: The side condition on the last law is needed because empty is a left identity for <>. modemode :: Style -> ModeStyleModeThe rendering mode Modedata ModeVRendering mode. lparenlparen :: DocDocA '(' character  lineLength lineLength :: Style -> Int StyleIntLength of line, in chars LeftModeLeftMode :: Modee^Mode&No indentation, infinitely long lines lbracklbrack :: DocŖDocA '[' character lbracelbrace :: Doc DocA '{' character isEmptyisEmpty :: Doc -> BoolseDocBool-Returns True if the document is empty integerinteger :: Integer -> DocIntegerDoc'
integer n = text (show n)
intint :: Int -> Dock^IntDoc#
int n = text (show n)
hsephsep :: [Doc] -> DocϘ[]DocDoc"List version of <+>. hcathcat :: [Doc] -> DocXE[]DocDoc!List version of <>. hang hang :: Doc -> Int -> Doc -> Doc֙DocIntDocDoc0
hang d1 n d2 = sep [d1, nest n d2]
 fullRender fullRender :: Mode -> Int -> Float ->  TextDetails -> a -> a -> a -> Doc -> aԚ ModeIntFloat TextDetailsaaaDoca!The general rendering interface. fsepfsep :: [Doc] -> Doc|i[]DocDoc("Paragraph fill" version of sep. floatfloat :: Float -> DocFloatDoc%
float n = text (show n)
fcatfcat :: [Doc] -> Doco\[]DocDoc("Paragraph fill" version of cat. equalsequals :: Docќ˜DocA '=' character emptyempty :: DocDocThe empty document, with no height and no width. empty is the identity for <>, <+>, $$ and $+$, and anywhere in the argument list for sep, hcat, hsep, vcat, fcat etc.  doubleQuotes doubleQuotes :: Doc -> DocnaDocDoc Wrap document in "..." doubledouble :: Double -> DocԞDoubleDoc&
double n = text (show n)
Docdata Doc4_The abstract type of documents. The Show instance is equivalent to using render. commacomma :: Doc˟şDocA ',' character coloncolon :: Doc DocA ':' character ChrChr :: Char ->  TextDetailsiChar TextDetailscharchar :: Char -> Doc͠CharDocBA document of height and width 1, containing a literal character. catcat :: [Doc] -> DocaN[]DocDoc#Either hcat or vcat. bracketsbrackets :: Doc -> DocءˡDocDoc Wrap document in [...] bracesbraces :: Doc -> DocH;DocDoc Wrap document in {...} <> (<>) :: Doc -> Doc -> DocʢDocDocDocDBeside. <> is associative, with identity empty. <+> (<+>) :: Doc -> Doc -> Docr`DocDocDocBeside, separated by space, unless one of the arguments is empty. <+> is associative, with identity empty. $+$ ($+$) :: Doc -> Doc -> Doc\JDocDocDocSAbove, with no overlapping. $+$ is associative, with identity empty. $$ ($$) :: Doc -> Doc -> DocDocDocDocAbove, 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 empty, and also satisfies  PrettyPrintmodule Text. PrettyPrintERe-export of Text.PrettyPrint.HughesPJ to provide a default pretty-printing library. Marked experimental at the moment; the default library might change at a later date. prettypackage pretty!JPretty-printing library This package contains a pretty-printing library. HughesPJmodule Text.PrettyPrint.HughesPJ5John Hughes's and Simon Peyton Jones's Pretty Printer Combinators Based on The Design of a Pretty-printing Library in Advanced Functional Programming, Johan Jeuring and Erik Meijer (eds), LNCS 925 http://www.cs.chalmers.se/~rjmh/Papers/pretty.ps Heavily modified by Simon Peyton Jones, Dec 96 Text PrettyPrintHughesPJText PrettyPrint(pretty1.0.0.0Dhttp://hackage.haskell.org/packages/archive/pretty/1.0.0.0/doc/html/Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/pretty