-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A generic derivable Haskell pretty printer -- -- A library that supports deriving of pretty printing functions on data -- types. -- -- The interfaces of pretty printer used are based on that introduced in -- the paper: Philip Wadler, A Prettier Printer, The Fun of Programming, -- Cornerstones of Computing (2003): 223-243. original paper -- -- The form of generic feature used is based on that introduced in the -- paper: Magalhaes, et al., A Generic Deriving Mechanism for Haskell, -- 3'rd ACM Symposium on Haskell, pp. 37-48, September 2010, -- http://dx.doi.org/10.1145/1863523.1863529. The necessary -- information of implementation of GHC.Generics is described here: -- https://hackage.haskell.org/package/base-4.9.0.0/docs/GHC-Generics.html#g:1. -- -- The implementation of deriving part of API is based on that designed -- in the library: GenericPretty, the details are introduced here: -- https://hackage.haskell.org/package/GenericPretty @package PPrinter @version 0.1.0 module Text.PPrinter class Pretty a where ppPrec n x = rep $ gpp Prefixt n False (from x) pp x = rep $ gpp Prefixt 0 False (from x) genList [] = nil genList (x : xs) = comma <> line <> whiteSpace <> nest indent (pp x) <> genList xs ppList [] = text "[]" ppList (x : xs) = group $ text "[" <> nest indent (pp x) <> genList xs <> text "]" -- | ppPrec converts a value to a pretty printable DOC. ppPrec :: Pretty a => Int -> a -> DOC -- | pp is the equivalent of show pp :: Pretty a => a -> DOC genList :: Pretty a => [a] -> DOC -- | ppList is the equivalent of showList ppList :: Pretty a => [a] -> DOC -- | A rendering style data Style Style :: Mode -> Int -> Style -- | The redering mode [mode] :: Style -> Mode -- | Length of line [lineLen] :: Style -> Int pprint :: Show a => Pretty a => a -> IO () pprintLen :: Show a => Pretty a => Int -> a -> IO () -- | The default Pretty Printer pprintStyle :: Show a => Pretty a => Style -> a -> IO () -- | Representable types of kind *. This class is derivable in GHC with the -- DeriveGeneric flag on. class Generic a instance GHC.Show.Show Text.PPrinter.Doc instance GHC.Show.Show Text.PPrinter.DOC instance Text.PPrinter.GPretty GHC.Generics.U1 instance Text.PPrinter.Pretty a => Text.PPrinter.GPretty (GHC.Generics.K1 i a) instance (Text.PPrinter.GPretty a, Text.PPrinter.GPretty b) => Text.PPrinter.GPretty (a GHC.Generics.:+: b) instance (Text.PPrinter.GPretty a, Text.PPrinter.GPretty b) => Text.PPrinter.GPretty (a GHC.Generics.:*: b) instance (Text.PPrinter.GPretty a, GHC.Generics.Datatype c) => Text.PPrinter.GPretty (GHC.Generics.M1 GHC.Generics.D c a) instance (Text.PPrinter.GPretty f, GHC.Generics.Selector c) => Text.PPrinter.GPretty (GHC.Generics.M1 GHC.Generics.S c f) instance (Text.PPrinter.GPretty f, GHC.Generics.Constructor c) => Text.PPrinter.GPretty (GHC.Generics.M1 GHC.Generics.C c f) instance Text.PPrinter.Pretty () instance Text.PPrinter.Pretty GHC.Types.Bool instance Text.PPrinter.Pretty GHC.Types.Ordering instance Text.PPrinter.Pretty GHC.Types.Int instance Text.PPrinter.Pretty GHC.Integer.Type.Integer instance Text.PPrinter.Pretty GHC.Types.Float instance Text.PPrinter.Pretty GHC.Types.Double instance Text.PPrinter.Pretty GHC.Types.Char instance Text.PPrinter.Pretty a => Text.PPrinter.Pretty [a] instance (Text.PPrinter.Pretty a, Text.PPrinter.Pretty b) => Text.PPrinter.Pretty (Data.Map.Base.Map a b) instance Text.PPrinter.Pretty a => Text.PPrinter.Pretty (GHC.Base.Maybe a) instance (Text.PPrinter.Pretty a, Text.PPrinter.Pretty b) => Text.PPrinter.Pretty (Data.Either.Either a b) instance (Text.PPrinter.Pretty a, Text.PPrinter.Pretty b) => Text.PPrinter.Pretty (a, b) instance (Text.PPrinter.Pretty a, Text.PPrinter.Pretty b, Text.PPrinter.Pretty c) => Text.PPrinter.Pretty (a, b, c) instance (Text.PPrinter.Pretty a, Text.PPrinter.Pretty b, Text.PPrinter.Pretty c, Text.PPrinter.Pretty d) => Text.PPrinter.Pretty (a, b, c, d) instance (Text.PPrinter.Pretty a, Text.PPrinter.Pretty b, Text.PPrinter.Pretty c, Text.PPrinter.Pretty d, Text.PPrinter.Pretty e) => Text.PPrinter.Pretty (a, b, c, d, e) instance (Text.PPrinter.Pretty a, Text.PPrinter.Pretty b, Text.PPrinter.Pretty c, Text.PPrinter.Pretty d, Text.PPrinter.Pretty e, Text.PPrinter.Pretty f) => Text.PPrinter.Pretty (a, b, c, d, e, f) instance (Text.PPrinter.Pretty a, Text.PPrinter.Pretty b, Text.PPrinter.Pretty c, Text.PPrinter.Pretty d, Text.PPrinter.Pretty e, Text.PPrinter.Pretty f, Text.PPrinter.Pretty g) => Text.PPrinter.Pretty (a, b, c, d, e, f, g) instance (Text.PPrinter.Pretty a, Text.PPrinter.Pretty b, Text.PPrinter.Pretty c, Text.PPrinter.Pretty d, Text.PPrinter.Pretty e, Text.PPrinter.Pretty f, Text.PPrinter.Pretty g, Text.PPrinter.Pretty h) => Text.PPrinter.Pretty (a, b, c, d, e, f, g, h) instance (Text.PPrinter.Pretty a, Text.PPrinter.Pretty b, Text.PPrinter.Pretty c, Text.PPrinter.Pretty d, Text.PPrinter.Pretty e, Text.PPrinter.Pretty f, Text.PPrinter.Pretty g, Text.PPrinter.Pretty h, Text.PPrinter.Pretty i) => Text.PPrinter.Pretty (a, b, c, d, e, f, g, h, i) instance (Text.PPrinter.Pretty a, Text.PPrinter.Pretty b, Text.PPrinter.Pretty c, Text.PPrinter.Pretty d, Text.PPrinter.Pretty e, Text.PPrinter.Pretty f, Text.PPrinter.Pretty g, Text.PPrinter.Pretty h, Text.PPrinter.Pretty i, Text.PPrinter.Pretty j) => Text.PPrinter.Pretty (a, b, c, d, e, f, g, h, i, j) instance (Text.PPrinter.Pretty a, Text.PPrinter.Pretty b, Text.PPrinter.Pretty c, Text.PPrinter.Pretty d, Text.PPrinter.Pretty e, Text.PPrinter.Pretty f, Text.PPrinter.Pretty g, Text.PPrinter.Pretty h, Text.PPrinter.Pretty i, Text.PPrinter.Pretty j, Text.PPrinter.Pretty k) => Text.PPrinter.Pretty (a, b, c, d, e, f, g, h, i, j, k) instance (Text.PPrinter.Pretty a, Text.PPrinter.Pretty b, Text.PPrinter.Pretty c, Text.PPrinter.Pretty d, Text.PPrinter.Pretty e, Text.PPrinter.Pretty f, Text.PPrinter.Pretty g, Text.PPrinter.Pretty h, Text.PPrinter.Pretty i, Text.PPrinter.Pretty j, Text.PPrinter.Pretty k, Text.PPrinter.Pretty l) => Text.PPrinter.Pretty (a, b, c, d, e, f, g, h, i, j, k, l)