h*&#4      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc3.1 Safe-Inferred%&(/9:;pretty-compactd new annotation to the .;Example: 'Any True' annotation will transform the rendered  into uppercase:let r = putStrLn . renderWith defaultOptions { optsAnnotate = \a x -> if a == Any True then map toUpper x else x }8r $ text "hello" <$$> annotate (Any True) (text "world")helloWORLDpretty-compactmaximum page width pretty-compacthow to annotate the string. Note: the annotation should preserve the visible length of the string.epretty-compactAnnotated string, which consists of segments with separate (or no) annotations.We keep annotated segments in a container (list). The annotation is Maybe a+, because the no-annotation case is common.Note: with Last x annotation, the  will overwrite all annotations.Note: if the list is changed into f or similar structure allowing fast viewr and viewl, then we can impose an additional invariant that there aren't two consequtive non-annotated segments; yet there is no performance reason to do so.gpretty-compactTests the invariants of ehpretty-compactMake a non-annotated e.ipretty-compact paretoOn m = paretoOn' m [] pretty-compact The document  (x $$> y) concatenates document x and y) with a linebreak in between. (infixr 5)jpretty-compactmeasure pretty-compactrendering optionspretty-compact renderable        Safe-Inferred"".2pretty-compact Render the  into k omitting all annotations.4pretty-compact The document  (list xs) comma separates the documents xs and encloses them in square brackets. The documents are rendered horizontally if that fits the page. Otherwise they are aligned vertically. All comma separators are put in front of the elements.5pretty-compact The document  (tupled xs) comma separates the documents xs and encloses them in parenthesis. The documents are rendered horizontally if that fits the page. Otherwise they are aligned vertically. All comma separators are put in front of the elements.6pretty-compact The document (semiBraces xs) separates the documents xs with semi colons and encloses them in braces. The documents are rendered horizontally if that fits the page. Otherwise they are aligned vertically. All semi colons are put in front of the elements.7pretty-compact The document (enclosure l r sep xs) concatenates the documents xs separated by sep( and encloses the resulting document by l and r. The documents are rendered horizontally if that fits the page. Otherwise they are aligned vertically. All separators are put in front of the elements. For example, the combinator 4 can be defined with  enclosure: list xs = enclosure lbracket rbracket comma xs test = text "list" <+> (list (map int [10,200,3000])).Which is layed out with a page width of 20 as: list [10,200,3000] 2But when the page width is 15, it is layed out as: list [10 ,200 ,3000] 8pretty-compact(punctuate p xs) concatenates all documents in xs with document p except for the last document. someText = map text ["words","in","a","tuple"] test = parens (align (cat (punctuate comma someText)))+This is layed out on a page width of 20 as: (words,in,a,tuple) 2But when the page width is 15, it is layed out as: (words, in, a, tuple) (If you want put the commas in front of their elements instead of at the end, you should use 5 or, in general, 7.)9pretty-compact The document (sep xs) concatenates all documents xs either horizontally with (<+>)+, if it fits the page, or vertically with (<$$>). Documents on the left of horizontal concatenation must fit on a single line.:pretty-compact The document  (hsep xs) concatenates all documents xs horizontally with (<+>).;pretty-compact The document (cat xs) concatenates all documents xs either horizontally with (<>)+, if it fits the page, or vertically with (<$$>).<pretty-compact The document  (hcat xs) concatenates all documents xs horizontally with (<>).=pretty-compact The document  (vcat xs) concatenates all documents xs vertically with ($$).>pretty-compact The document  (x <+> y) concatenates document x and y with a space in between. (infixr 6)?pretty-compact The document  (x y) puts x and y$ either next to each other (with a space1 in between) or underneath each other. (infixr 5)@pretty-compact The document  (x y) puts x and y& either right next to each other (if x= fits on a single line) or underneath each other. (infixr 5)Apretty-compact The document  (x <$$> y) concatenates document x and y) with a linebreak in between. (infixr 5)Bpretty-compact Document  (squotes x) encloses document x with single quotes "'".Cpretty-compact Document  (dquotes x) encloses document x with double quotes '"'.Dpretty-compact Document  (braces x) encloses document x in braces, "{" and "}".Epretty-compact Document  (parens x) encloses document x in parenthesis, "(" and ")".Fpretty-compact Document  (angles x) encloses document x in angles, "<" and ">".Gpretty-compact Document  (brackets x) encloses document x" in square brackets, "[" and "]".Hpretty-compact The document (enclose l r x) encloses document x between documents l and r using (<>).Jpretty-compact The document lparen" contains a left parenthesis, "(".Kpretty-compact The document rparen# contains a right parenthesis, ")".Lpretty-compact The document langle contains a left angle, "<".Mpretty-compact The document rangle contains a right angle, ">".Npretty-compact The document lbrace contains a left brace, "{".Opretty-compact The document rbrace contains a right brace, "}".Ppretty-compact The document lbracket% contains a left square bracket, "[".Qpretty-compact The document rbracket& contains a right square bracket, "]".Rpretty-compact The document squote contains a single quote, "'".Spretty-compact The document dquote contains a double quote, '"'.Tpretty-compact The document semi contains a semi colon, ";".Upretty-compact The document colon contains a colon, ":".Vpretty-compact The document comma contains a comma, ",".Wpretty-compact The document dot contains a single dot, ".".Xpretty-compact The document  backslash contains a back slash, "\".Ypretty-compact The document equals contains an equal sign, "=".Zpretty-compact The document  (string s) concatenates all characters in s using line for newline characters and char2 for all other characters. It is used instead of 0 whenever the text contains newline characters.\pretty-compact The document (int i) shows the literal integer i using .]pretty-compact The document  (integer i) shows the literal integer i using .^pretty-compact The document  (float f) shows the literal float f using ._pretty-compact The document  (double d) shows the literal double d using .`pretty-compact The document  (rational r) shows the literal rational r using .apretty-compactThe hang combinator implements hanging indentation. The document  (hang i x y) either x and y concatenated with <+> or y below x# with an additional indentation of i.bpretty-compactThe hang combinator implements hanging indentation. The document (hang separator i x y) either x and y concatenated with <> text separator <> or y below x$ with an additional indentation of i.lmnopqrstuvwxyz{|}~dIab7456> ?@A:9<=;8HBCEFDGJKLMNOPQRSTUVcWXYZ\]^_`[ 2 3<Iab7456> ?@A:9<=;8HBCEFDGJKLMNOPQRSTUVcWXYZ\]^_`[ 2 3       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqghrgstgstgsugsvgsvgswgsxgsxgsygz{gz{gz|gz}gz}gz~ghghghghgsgsgsgsgsgsgsgsgsgsgsgsgzgzgz)pretty-compact-3.1-H7u4I5eAobgAXDPGIymmB3Text.PrettyPrint.Compact.CoreText.PrettyPrint.Compactpretty-compactDoc AnnotationLayouttextflushannotateOptions optsPageWidth optsAnnotate renderWith$$ groupingBy $fSemigroupAS $fMonoidL $fSemigroupL $fLayoutL $fLayoutM $fMonoidM $fSemigroupM$fPosetM $fLayoutPair $fMonoidPair$fSemigroupPair $fLayoutODoc $fMonoidODoc$fSemigroupODoc$fIsStringODoc $fFunctorODoc $fFunctorPair$fFoldablePair$fTraversablePair$fShowM$fEqM$fOrdM $fFunctorM $fFoldableM$fTraversableM$fEqL$fOrdL$fShowL $fFunctorL $fFoldableL$fTraversableL$fEqAS$fOrdAS$fShowAS $fFunctorAS $fFoldableAS$fTraversableASrenderdefaultOptionslisttupled semiBraces encloseSep punctuatesephsepcathcatvcat<+><$$>squotesdquotesbracesparensanglesbracketsenclosecharlparenrparenlangleranglelbracerbracelbracketrbracketsquotedquotesemicoloncommadot backslashequalsstringboolintintegerfloatdoublerationalhanghangWithspacebaseGHC.Base<>AScontainers-0.6.7Data.Sequence.InternalSeq_validAsmkAS paretoOn'bestsOnStringData.Semigroup.InternalAnygetAnySumgetSumProduct getProduct Data.MonoidLastgetLastFirstgetFirstMonoidmemptymappendmconcatAltgetAltAllgetAllEndoappEndoDualgetDualApgetAp