h& /      !"#$%&'()*+,-. Safe-Inferred"1<sayableThis is the default annotation type for the Saying module. The Prettyprinter reannotate operation can be used to change this annotation into any other annotation type the client desires.The SayableAnn is an instance of IsLabel, so if OverloadedLabels is enabled, this can easily be specified: import qualified Prettyprinter as PP import Text.Sayable putStrLn $ sez @"info" $ PP.annotate #myann $ Hello &- "world!"  Doc ann) function (the first argument) to the Sayable in the second argument. This is different from the  # operator in that the former uses  to join two independent  ? values, whereas this operator applies a transformation (e.g. Prettyprinter.annotate AnnValue or )Prettyprinter.align . Prettyprinter.group ) to the  in the second  argument. sayableA helper operator allowing a Sayable item to be composed with a Foldable series of Sayable items. This can be used when the second argument is a List, Sequence, Set, etc. to add all elements of the set (comma-separated).Note: this instance makes it easy to output lists, Sequence, NonEmpty.List, etc., but it can have undesireable effects for data structures whose Foldable (Functor) is irregular... for example, folding over a tuple only returns the / value of a tuple. Consider wrapping tuples in a newtype with an explicit Sayable to avoid this. sayableA helper operator that generates a sayable from a list of sayable items, separated by the first sayable sayableA helper operator that applies the first argument which converts an array of 'Prettyprinter.Doc ann' elements to a single 'PrettyPrinter.Doc ann' element to the second argument, which is a Foldable collection of 2 items. This is essentially a combination of the   and   operators where the first operation takes the list of doc items and returns a single item. import qualified Prettyprinter as PP putStrLn $ sez @"info" $ t'"The stooges are" &- PP.hsep &!* ["Larry", "Mo", "Curly"]The stooges are Larry Mo CurlysayableA helper operator that applies the first argument (a Prettyprinter adaptation function) to the result of a Foldable collection of 3 items. This is essentially a combination of the   and   operators where the first operation is applied to the entire list, rather than each element of the list (as with  ).sayableA helper operator that applies the first argument which converts an array of 'Prettyprinter.Doc ann' elements to a single 'PrettyPrinter.Doc ann' element to the second argument, which is a Foldable collection of 3 items. This is essentially a combination of the   and   operators.Unlike the other operators defined in this package, this is a trinary operator rather than a binary operator. Because function application (whitespace) is the highest precedence, the last argument will typically need a preceeding $ to prevent applying the second argument to the third argument before applying this operator. import qualified Prettyprinter as PP putStrLn $ sez @"info" $ PP.fillSep &!+* t'" and " $ ["one", "two", "three"]one and two and threesayable>A helper operator allowing a Sayable item to be wrapped in a 0. This adds the  of the first argument to the  of the second argument in the 1 case, or just emits the 2 of the first argument if the second argument is 2.sayable=A helper operator allowing a Sayable item to be wrapped in a 0 and a prettyprinter conversion as the first argument. This is a combination of the   and  operators.sayableA helper operator that generates a newline between its two arguments. Many times the  operator is a better choice to allow normal prettyprinter layout capabilities, but in situations where it is known that multiple lines will or should be generated, this operator makes it easy to separate the lines.sayable A helper operator that combines  and   which will generate a newline between its two arguments, where the second argument is a foldable collection whose elements will be sayable emitted with comma separators.sayableA helper operator that emits the first argument and optionally emits a newline and the 1= value of the second argument if the second argument is not 2sayableA helper function to use when OverloadedStrings: is active to identify the following quoted literal as a  Data.Text object.sayableA helper function to use when creating a PP.Doc SayableAnn data object (i.e. fixing the ann of 'Doc ann' to )sayableThis is a convenience function that can be used for simple conversions of a Sayable to a String. The use of this function is not generally recommended: a more controlled rendering of the resulting  (obtained from the via ) is recommended, but there are times (especially when debugging) when a quick conversion/extraction to a String is convenient.4This function is often used with a type application: putStrLn $ sez @"info" $ "There are" &- length lst &- "list elements."sayableA Saying can be converted back into a PP.Pretty instance representation. Just saying... :-)This can be convenient to apply Prettyprinter formatting elements. For example: instance Sayable saytag Foo where sayable foo = sayable @saytag $ Prettyprinter.group $ Prettyprinter.pretty $ field1 foo &- sayable @saytag PP.line &- field2 foo This uses  and  formatters to show the two fields on the same line if they will fit, otherwise stacked on top of each other. Note that the second portion needs an explicit TypeApplication (applied here to the ) because the  and ' functions do not propagate that outer saytag to the inner portion..sayableInputs that are (, i.e. that can be converted to a Saying    11 1 2 1 2 222111113       !"#$%&'()*+,-./0123456758958:58;<&sayable-1.1.1.0-I0ECWoCXzNp7RRqYF9sn9s Text.Sayable PrettyprinterhsepDocgrouplinepretty SayableAnnSayingsayingSayablesayable&-&+&%&!&*&+*&!*&!$*&!+*&?&!?&<&<*&