h&+)4      !"#$%&'()*+,-./0123 Safe-Inferred"1<)XsayableThis 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. sez @"info" $ PP.group &! t'"hi""hi" 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 4 value of a tuple. Consider wrapping tuples in a newtype with an explicit Sayable to avoid this.*sez @"info" $ t'"three:" &* [1, 2, 3::Int]"three: 1, 2, 3"If the second argument is a null collection then no output is generated for it. sayableA helper operator that generates a sayable from a foldable group (e.g. list) of sayable items. This helper is linke the   operator except that the folded output is immediately adjacent to the preceeding sayable output instead of separated by a space; this is useful for situations where the folded output has delimiters like parentheses or brackets.7sez @"info" $ t'"three:" &- '(' &+* [1,2,3::Int] &+ ')'"three: (1, 2, 3)"If the second argument is an empty collection then no output is generated for it. sayableA helper operator that generates a sayable from a list of sayable items, separated by the first sayable argument (instead of the ", " that use used by the   operator).5sez @"info" $ t'"three:" &- t'".." &:* [1, 2, 3::Int]"three: 1..2..3"sayable/A helper operator that is a combination of the   and   operators. It applies the first argument (which converts an array of 'Prettyprinter.Doc ann' elements into a single 'PrettyPrinter.Doc ann' element) to the second argument (which is a Foldable collection of  items).sez @"info" $ t'"three:" &- PP.align . PP.vsep &!* [1, 2, 3::Int]""three: 1, \n 2, \n 3"sayableA 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 ).8sez @"info" $ t'"three:" &- PP.align &!$* [1, 2, 3::Int]"three: 1, 2, 3" As with the  operator (and unlike the   operator), a null collection is passed to the converter first argument.@since: 1.1.0.0sayableA 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.sez @"info" $ t'"three:" &- (PP.align . PP.vsep &!:* (t'" or")) [1, 2, 3::Int]$"three: 1 or\n 2 or\n 3"sayable>A helper operator allowing a Sayable item to be wrapped in a 5. This adds the  of the first argument to the  of the second argument in the 6 case, or just emits the 2 of the first argument if the second argument is 7.sez @"info" $ t'"It's" &? Just (t'"something") &- t'"or" &? (Nothing :: Maybe Text)"It's something or"sayable=A helper operator allowing a Sayable item to be wrapped in a 5 and a prettyprinter conversion as the first argument. This is a combination of the   and  operators.(sez @"info" $ PP.group &!? Just (t'"hi")"hi"@since: 1.1.0.0sayableA 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.$sez @"info" $ t'"Hello" &< t'"world""Hello\nworld"@since: 1.1.0.0sayable 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.+sez @"info" $ t'"three:" &<* [1, 2, 3::Int]"three:\n1, 2, 3"@since: 1.1.0.0sayableA helper operator that emits the first argument and optionally emits a newline and the 6= value of the second argument if the second argument is not 7 (a combination of the  and  operators).0sez @"info" $ t'"First" &?=@A=@B=@C=DE&sayable-1.2.2.0-FKuIKZl7VZuDw0YWFeLVUv Text.Sayable PrettyprinterhcatDocPretty Data.StringIsStringgrouplinepretty SayableAnnSayingsayingSayablesayable&-&+&%&!&*&+*&:*&!*&!$*&!:*&?&!?&<&<*&