Because we don't want to commit to single pretty printing library, we use explicit dictionary.
Constructors
PrettyppCon :: ConstructorName -> docDisplay ConstructorName
ppApp :: doc -> [doc] -> docDisplay App
ppRec :: doc -> [(FieldName, doc)] -> docDisplay Rec
ppLst :: [doc] -> docDisplay Lst
ppCpy :: doc -> docDisplay unchanged parts
ppIns :: doc -> docDisplay added parts
ppDel :: doc -> docDisplay removed parts
ppEdits :: [doc] -> docCombined edits (usually some
sepcombinator)ppEllip :: docEllipsis
ppParens :: doc -> docParens an expression