h$>      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst Safe-Inferred silkscreenA  abstracts pretty-printing to allow the composition of behaviours such as e.g. rainbow parentheses, precedence handling, and so forth. silkscreen1The type of annotations supported by the printer.5We provide this as a type family instead of defining  over kind  Type -> Type6 in order to allow instances to constrain annotations. silkscreenLift a u to a . silkscreenLift a unary function on u to a .  silkscreenLift a binary function on u to a .  silkscreen  l r x wraps x in l and r.Distinct from *# (which is not overloaded) so that * remains available as a convenience for appending documents without whatever extra semantics are implied by any particular 3 (rainbow precedences, resetting precedence, etc.).1Overloadable to support e.g. rainbow parentheses.  silkscreen#Wrap the argument in single quotes.,The default definition is given in terms of  . Overloadable to support e.g. rainbow quotes (or disabling of same, if desired).  silkscreen#Wrap the argument in double quotes.,The default definition is given in terms of  . Overloadable to support e.g. rainbow quotes (or disabling of same, if desired).  silkscreenParenthesize the argument.,The default definition is given in terms of  . Overloadable to support e.g. rainbow parentheses (or disabling of same, if desired). silkscreenWrap the argument in brackets.,The default definition is given in terms of  . Overloadable to support e.g. rainbow brackets (or disabling of same, if desired). silkscreenWrap the argument in braces.,The default definition is given in terms of  . Overloadable to support e.g. rainbow braces (or disabling of same, if desired). silkscreen$Wrap the argument in angle brackets.,The default definition is given in terms of  . Overloadable to support e.g. rainbow angle brackets (or disabling of same, if desired). silkscreenPretty-print a value using the  instance for its type. silkscreen Annotate a  with an  p. silkscreen+Try to unwrap the argument, if it will fit. silkscreenPrint the first argument by default, or the second when an enclosing  flattens it. silkscreen3Indent lines in the argument to the current column. silkscreenIndent following lines in the argument to the current column + some delta. silkscreenIndent lines in the argument to the current column + some delta. silkscreen i p0 changes the indentation level for new lines in p by i.* silkscreen* l r x wraps x in l and r.. silkscreen. x l r wraps x in l and r.This is a reordering of *., but allows for convenient use in e.g. folds:'foldr1' ('surround' ('pretty' ", ")) ['pretty' "apple", 'pretty' "banana"] apple, banana/ silkscreen$Separate the arguments with a space.0 silkscreen#Separate the arguments with a line.1 silkscreen8Conditional parenthesization of a printer. Analogous to v, but for printers.   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI/606 Safe-Inferred}N silkscreen5Make a printer informed by the current nesting level.O silkscreen/Locally change the nesting level for a printer.P silkscreen-Apply the current nesting level to a printer.Different instances can give different meanings to this, e.g. annotating the argument with the nesting level or some other means of rendering it differently.Q silkscreen)Increment the nesting level of a printer.This should be used inside parentheses, brackets, braces, etc., and will inform the annotation of their delimiters.   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIMNOPQRMNOPQR Safe-Inferred? T silkscreenPretty-printing with parenthesis insertion resolving precedence.Given: data ArithLevel = Bottom | Add | Mult | Exp | Top deriving (Eq, Ord) (+.) :: (PrecedencePrinter p, Level p ~ ArithLevel) => p -> p -> p (+.) = Z Add (. ( " + ")) infixl 6 +. (*.) :: (PrecedencePrinter p, Level p ~ ArithLevel) => p -> p -> p (*.) = Z Mult (. ( " * ")) infixl 7 *. (^.) :: (PrecedencePrinter p, Level p ~ ArithLevel) => p -> p -> p (^.) = ] Exp Top (. ( " ^ ")) infixr 8 ^. putDoc . runPrec Bottom $ ('pretty' "a" +. 'pretty' "b") *. 'pretty' "c" ^. ('pretty' "d" *. 'pretty' "e")(a + b) * c ^ (d * e)U silkscreenThe type used to represent precedence levels. This is defined as an associated type so that consumers can use e.g. symbolic representations of their DSL@s precedence levels instead of e.g. unsemantic ws.This type will usually be xered, but this isn@t strictly required so that other means of determining precedence can be provided.V silkscreenPrint informed by the current U.W silkscreenLocally change the U in a printer.X silkscreenSet a constant precedence.This function does not insert parentheses, and thus should be used when inserting parentheses or otherwise resetting the precedence level.Y silkscreenSet a constant precedence, parenthesizing in higher-precedence contexts.Z silkscreen8Make an associative infix combinator at the given level.[ silkscreenMake a non-associative infix combinator at the given levels for the operator itself and its operands.\ silkscreenMake a left-associative infix combinator at the given levels for the operator itself and its right operand.] silkscreenMake a right-associative infix combinator at the given levels for the operator itself and its left operand.^ silkscreenMake an infix combinator at the given level for the operator itself, applying functions to either operand.   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHITUVWXYZ[\]^ TUVWXYZ[\]^None_   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHITWUVUXYZ[\]^`abb`aNone   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIMPNOQRlmnnlm      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghhijklmnopqrsstuvwxyz{|}~silkscreen-0.0.0.0-inplace SilkscreenSilkscreen.NestingSilkscreen.PrecedenceSilkscreen.Printer.PrecSilkscreen.Printer.Rainbowprttyprntr-1.7.0-2cde5284Prettyprinter.Internalplural PageWidthAvailablePerLine UnboundedPrettyPrinterAnnliftDoc0liftDoc1liftDoc2 enclosingsquotesdquotesparensbracketsbracesanglescolumnnesting pageWidthpretty prettyListannotategroupflatAltalignhangindentnest concatWithhsepvsepfillSepsephcatvcatfillCatcat punctuatewidthfill fillBreakenclose encloseSeplisttupledsurround<+>parensIfspacelineline'softline softline'hardlinelparenrparenlbracketrbracketlbracerbracelangleranglesquotedquotesemicommacolondotslash backslashequalspipe $fPrinter-> $fPrinter(,) $fPrinterDocNestingPrinter askingNesting localNesting applyNesting incrNestingencloseNesting$fNestingPrinter->PrecedencePrinterLevel askingPrec localPrecsetPrecprecassocnonAssoc leftAssoc rightAssocinfix_$fPrecedencePrinter->PrecrunPrec$fNestingPrinterPrec$fPrecedencePrinterPrec $fPrinterPrec $fShowPrec$fApplicativePrec $fFunctorPrec $fMonadPrec $fMonoidPrec$fSemigroupPrecRainbow runRainbow$fPrecedencePrinterRainbow$fNestingPrinterRainbow$fPrinterRainbow $fShowRainbow$fMonoidRainbow$fSemigroupRainbowDocbaseGHC.Show showParenghc-prim GHC.TypesInt GHC.ClassesOrd