1 {-# LANGUAGE TemplateHaskell #-}
2 module CLasH.Normalize.NormalizeTypes where
6 import qualified Control.Monad.Trans.Writer as Writer
7 import qualified Control.Monad.Trans.State as State
8 import qualified Data.Monoid as Monoid
9 import qualified Data.Accessor.Template
11 import qualified Data.Map as Map
16 import qualified VarSet
17 import Outputable ( Outputable, showSDoc, ppr )
20 import CLasH.Utils.Core.CoreShow
21 import CLasH.Utils.Pretty
22 import CLasH.Translator.TranslatorTypes
24 -- Wrap a writer around a TranslatorSession, to run a single transformation
25 -- over a single expression and track if the expression was changed.
26 type TransformMonad = Writer.WriterT Monoid.Any TranslatorSession
28 -- | Transforms a CoreExpr and keeps track if it has changed.
29 type Transform = CoreExpr -> TransformMonad CoreExpr