{-# LANGUAGE Haskell2010 #-} {-# LANGUAGE RoleAnnotations #-} {-# LANGUAGE DeriveTraversable, DeriveGeneric, EmptyCase, DeriveDataTypeable, StandaloneDeriving, DeriveLift #-} module DrvEmptyData where import GHC.Generics (Generic, Generic1) import Data.Data (Data) import Language.Haskell.TH.Syntax (Lift) data Void a deriving (Functor, Foldable, Traversable, Generic, Generic1, Lift) -- We don't want to invoke the special case for phantom types here. type role Void nominal deriving instance Data a => Data (Void a) deriving instance Eq (Void a) deriving instance Ord (Void a) deriving instance Show (Void a) deriving instance Read (Void a)