{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE UndecidableInstances #-}
module Data.Reify.Graph (
Graph(..),
Unique
) where
data Graph e = Graph [(Unique,e Unique)] Unique
type Unique = Int
instance (Show (e Unique)) => Show (Graph e) where
show :: Graph e -> String
show (Graph [(Unique, e Unique)]
netlist Unique
start) = String
"let " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [(Unique, e Unique)] -> String
forall a. Show a => a -> String
show [ (Unique
u,e Unique
e)
| (Unique
u,e Unique
e) <- [(Unique, e Unique)]
netlist
] String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" in " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Unique -> String
forall a. Show a => a -> String
show Unique
start