idris-0.9.2.1: src/Util/Pretty.hs
module Util.Pretty (
module Text.PrettyPrint.HughesPJ,
Sized(..), breakingSize, nestingSize,
Pretty(..)
) where
import Text.PrettyPrint.HughesPJ
-- A rough notion of size for pretty printing various types.
class Sized a where
size :: a -> Int
instance (Sized a, Sized b) => Sized (a, b) where
size (left, right) = 1 + size left + size right
instance Sized a => Sized [a] where
size = sum . map size
-- The maximum size before we break on to another line.
breakingSize :: Int
breakingSize = 15
nestingSize :: Int
nestingSize = 1
class Pretty a where
pretty :: a -> Doc
instance Pretty () where
pretty () = text "()"
instance Pretty a => Pretty [a] where
pretty l = foldr ($$) empty $ map pretty l