Move the Show deriving for Core types to a new CoreShow module.
[matthijs/master-project/cλash.git] / CoreShow.hs
diff --git a/CoreShow.hs b/CoreShow.hs
new file mode 100644 (file)
index 0000000..522fd39
--- /dev/null
@@ -0,0 +1,22 @@
+{-# LANGUAGE StandaloneDeriving #-}
+module CoreShow where
+
+-- This module derives Show instances for CoreSyn types.
+
+import qualified CoreSyn
+import qualified TypeRep
+
+import Outputable ( showSDoc, ppr)
+
+
+-- Derive Show for core expressions and binders, so we can see the actual
+-- structure.
+deriving instance (Show b) => Show (CoreSyn.Expr b)
+deriving instance (Show b) => Show (CoreSyn.Bind b)
+
+-- Implement dummy shows for Note and Type, so we can at least use show on
+-- expressions.
+instance Show CoreSyn.Note where
+  show n = "<note>"
+instance Show TypeRep.Type where
+  show t = "_type:(" ++ (showSDoc $ ppr t) ++ ")"