{-# LANGUAGE TemplateHaskell, DeriveDataTypeable #-} module Data.Generic.Diff.TH.Types where --import Control.Lens import Data.Data import Language.Haskell.TH data FamConType = Concrete | Abstract deriving(Data, Typeable, Show, Eq) data FamCon = FamCon { _famConHardness :: FamConType, _famConName :: Name , _famConOriginalName :: Name , _famConTypes :: [Type] } deriving(Data, Typeable, Show, Eq) --makeLenses ''FamCon data FamType = FamType { _famTypeType :: Type , _famTypeConstructors :: [FamCon] } deriving(Data, Typeable, Show, Eq) --makeLenses ''FamType data Fam = Fam { _famName :: Name , _famTypes :: [FamType] } deriving(Data, Typeable, Show, Eq) --makeLenses ''Fam