module HsModulePretty where import HsModule import HsIdentPretty import PrettyPrint instance (Printable m,Printable i,Printable ds) => Printable (HsModuleI m i ds) where ppi (HsModule s mod exps imps ds) = sep [kw "module" <+> modn mod, classNest $ sep [ maybepp ppiFTuple exps, kw "where" ]] $$ layout (map ppi imps++map (blankline$) (ppis ds)) where vspace :: [Doc] -> Doc vspace [] = empty vspace ds = blankline $ vcat ds instance (Printable m,Printable i) => Printable (HsExportSpecI m i) where ppi (EntE e) = ppi e ppi (ModuleE m) = kw "module" <+> modn m instance (Printable m,Printable i) => Printable (HsImportDeclI m i) where ppi (HsImportDecl _ m qual m' imps) = kw "import" <+> optpp qual (kw "qualified") <+> modn m <+> maybepp ((kw "as"<+>).modn) m' <+> maybepp ppImps imps where ppImps (hiding, imps) = optpp hiding (kw "hiding") <+> ppiFTuple imps instance Printable i => Printable (EntSpec i) where ppi (Var n) = wrap n ppi (Abs n) = tcon n -- could be a predicate in the P-logic ext ppi (AllSubs m) = tcon m <> "(..)" ppi (ListSubs m ns) = tcon m <> ppiFTuple (map (ppcon wrap) ns)