This is a set of utilities for the Haskell prettyrinter
package.
Most notable is automatic deriving of Pretty
instance from the
Generic
instance, e.g.
{-# LANGUAGE DeriveGeneric #-}
import Prettyprinter.Generics
data Foo a b = Bar Int | Baz a b
deriving (Generic)
instance (Pretty a, Pretty b) => Pretty (Foo a b) where
pretty = ppGeneric
printed :: Doc ann
printed = pretty $ Baz (Bar 10 :: Foo () ()) [1..22]
which would put following into printed
:
Baz
Bar 10
[ 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
, 10
, 11
, 12
, 13
, 14
, 15
, 16
, 17
, 18
, 19
, 20
, 21
, 22 ]