ddc-core-0.3.2.1: DDC/Core/Annot/AnT.hs
module DDC.Core.Annot.AnT
(AnT (..))
where
import DDC.Type.Exp
import DDC.Base.Pretty
import Control.DeepSeq
import Data.Typeable
-- Annot ----------------------------------------------------------------------
-- | The type checker for witnesses adds this annotation to every node in the,
-- giving the type of each component of the witness.
---
-- NOTE: We want to leave the components lazy so that the checker
-- doesn't actualy need to produce the type components if they're
-- not needed.
data AnT a n
= AnT
{ annotType :: (Type n)
, annotTail :: a }
deriving (Show, Typeable)
instance (NFData a, NFData n) => NFData (AnT a n) where
rnf !an
= rnf (annotType an)
`seq` rnf (annotTail an)
instance Pretty (AnT a n) where
ppr _ = text "AnT"