@@ -1,19 +1,18 @@
1+-- DataKinds is needed for deriveAll0 calls on GHC 8
1−{-# LANGUAGE CPP #-}
2+{-# LANGUAGE DataKinds #-}
2{-# LANGUAGE FlexibleInstances #-}
3{-# LANGUAGE FlexibleInstances #-}
3{-# LANGUAGE GADTs #-}
4{-# LANGUAGE GADTs #-}
4{-# LANGUAGE GeneralizedNewtypeDeriving #-}
5{-# LANGUAGE GeneralizedNewtypeDeriving #-}
5{-# LANGUAGE StandaloneDeriving #-}
6{-# LANGUAGE StandaloneDeriving #-}
6{-# LANGUAGE DeriveGeneric #-}
7{-# LANGUAGE DeriveGeneric #-}
8+{-# LANGUAGE TemplateHaskell #-}
7{-# LANGUAGE TypeFamilies #-}
9{-# LANGUAGE TypeFamilies #-}
9module DataFamilies.Types where
11module DataFamilies.Types where
13+import Generics.Deriving.TH (deriveAll0)
11import Types (ApproxEq(..))
14import Types (ApproxEq(..))
13−#if __GLASGOW_HASKELL__ >= 706
17data family Nullary a
16data family Nullary a
18data instance Nullary Int = C1 | C2 | C3 deriving (Eq, Show)
17data instance Nullary Int = C1 | C2 | C3 deriving (Eq, Show)
19data instance Nullary Char = C4 deriving (Eq, Show)
18data instance Nullary Char = C4 deriving (Eq, Show)
@@ -41,12 +40,10 @@ data instance GADT a where
41deriving instance Eq (GADT a)
40deriving instance Eq (GADT a)
42deriving instance Show (GADT a)
41deriving instance Show (GADT a)
44−-- We only derive instances for GHC 7.6 and higher because GHC 7.4 has a bug
43+-- We use generic-deriving to be able to derive Generic instances for
45−-- concerning generics and data families
44+-- data families on GHC 7.4.
47−#if __GLASGOW_HASKELL__ >= 706
46+$(deriveAll0 'C1)
48−deriving instance Generic (Nullary Int)
47+$(deriveAll0 'C4)
49−deriving instance Generic (Nullary Char)
48+$(deriveAll0 'Approx)
50−deriving instance Generic (SomeType c () a)
49+$(deriveAll0 'Nullary)
51−deriving instance Generic (Approx a)