th-typegraph-0.14: Language/Haskell/TH/TypeGraph/Edges.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeSynonymInstances #-}
module Language.Haskell.TH.TypeGraph.Edges
( TypeGraphEdges
) where
import Data.List as List (intercalate, map)
import Data.Map as Map (toList)
import Data.Set as Set (toList)
import Language.Haskell.Exts.Syntax ()
import Language.Haskell.TH -- (Con, Dec, nameBase, Type)
import Language.Haskell.TH.TypeGraph.Graph (GraphEdges)
import Language.Haskell.TH.TypeGraph.Core (pprint')
import Language.Haskell.TH.TypeGraph.Vertex (TypeGraphVertex)
import Language.Haskell.TH.Instances ()
import Language.Haskell.TH.PprLib (ptext)
type TypeGraphEdges = GraphEdges TypeGraphVertex
instance Ppr TypeGraphEdges where
ppr x =
ptext $ intercalate "\n " $
"edges:" : (List.map
(\ (k, ks) -> intercalate "\n " ((pprint' k ++ "->") : List.map pprint' (Set.toList ks)))
(Map.toList x))