-- 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)