prettyDepGraph :: (a -> Doc) -> (b -> Doc) -> (c -> Doc) -> DepGraph a b c
               -> Doc
prettyDepGraph pa pb pc gr =
    ppMap pa pf ((text "DepGraph" <+>) . braces) vcat f $ dataMap gr where
        f a b = a <> text ":" <+> b
        pf (v, dss, dps) =
            ps pa dss <+> text " << x << " <+> ps pc dps <> text ":" <+> pb v
        ps g = braces . (sepByCommas . map g) . Set.toList
prettyDepGraph :: (a -> Doc) -> (b -> Doc) -> (c -> Doc) -> DepGraph a b c
               -> Doc
prettyDepGraph pa pb pc gr =
    ppMap pa pf ((text "DepGraph" <+>) . braces) vcat f $ dataMap gr where
        f a b = a <> text ":" <+> b
        pf (v, dss, dps) =
            ps pa dss <+> text " << x << " <+> ps pc dps <> text ":" <+> pb v
        ps g = braces . (sepByCommas . map g) . Set.toList
prettyDepGraph pa pb pc gr =
    ppMap pa pf ((text "DepGraph" <+>) . braces) vcat f $ dataMap gr where
        f a b = a <> text ":" <+> b
        pf (v, dss, dps) =
            ps pa dss <+> text " << x << " <+> ps pc dps <> text ":" <+> pb v
        ps g = braces . (sepByCommas . map g) . Set.toList