1- {-# LANGUAGE CPP #-}
2- {-# LANGUAGE PolyKinds #-}
3- {-# LANGUAGE QuantifiedConstraints #-}
4- {-# LANGUAGE Safe #-}
5- {-# LANGUAGE TypeOperators #-}
6- #if __GLASGOW_HASKELL__ >= 810
1+ {-# LANGUAGE CPP #-}
2+ {-# LANGUAGE PolyKinds #-}
3+ {-# LANGUAGE QuantifiedConstraints #-}
4+ {-# LANGUAGE Safe #-}
75{-# LANGUAGE StandaloneKindSignatures #-}
8- #endif
6+ {-# LANGUAGE TypeOperators #-}
97module Data.EqP (
108 EqP (.. ),
119) where
1210
1311import Control.Applicative (Const (.. ))
14- import Data.Kind (Type )
12+ import Data.Kind (Constraint , Type )
1513import Data.Proxy (Proxy (.. ))
1614import Data.Type.Equality ((:~:) (.. ), (:~~:) (.. ))
1715import GHC.Generics ((:*:) (.. ), (:+:) (.. ))
1816import System.Mem.StableName (StableName , eqStableName )
17+ import Data.Functor.Product (Product (.. ))
18+ import Data.Functor.Sum (Sum (.. ))
1919
20- #if MIN_VERSION_base(4,18,0)
21- import Data.Functor.Product (Product (.. ))
22- import Data.Functor.Sum (Sum (.. ))
23- import qualified GHC.TypeLits as TL
24- import qualified GHC.TypeNats as TN
25- #endif
20+ import qualified GHC.TypeLits as TL
21+ import qualified GHC.TypeNats as TN
2622
2723#if !MIN_VERSION_base(4,19,0)
2824import Data.Orphans ()
2925#endif
3026
3127import qualified Type.Reflection as TR
3228
33- #if __GLASGOW_HASKELL__ >= 810
34- import Data.Kind (Constraint )
35- #endif
3629
3730-- | Heterogenous lifted equality.
3831--
@@ -60,9 +53,7 @@ import Data.Kind (Constraint)
6053-- /Note:/ P stands for phantom.
6154--
6255-- @since 1.0.5
63- #if __GLASGOW_HASKELL__ >= 810
6456type EqP :: (k -> Type ) -> Constraint
65- #endif
6657class (forall a . Eq (f a )) => EqP (f :: k -> Type ) where
6758 eqp :: f a -> f b -> Bool
6859
@@ -72,16 +63,13 @@ instance EqP ((:~:) a) where
7263instance EqP ((:~~: ) a ) where
7364 eqp _ _ = True
7465
75-
76- #if MIN_VERSION_base(4,18,0)
7766instance (EqP a , EqP b ) => EqP (Sum a b ) where
7867 eqp (InL x) (InL y) = eqp x y
7968 eqp (InR x) (InR y) = eqp x y
8069 eqp _ _ = False
8170
8271instance (EqP a , EqP b ) => EqP (Product a b ) where
8372 eqp (Pair x y) (Pair x' y') = eqp x x' && eqp y y'
84- #endif
8573
8674instance (EqP f , EqP g ) => EqP (f :+: g ) where
8775 eqp (L1 x) (L1 y) = eqp x y
@@ -94,7 +82,6 @@ instance (EqP a, EqP b) => EqP (a :*: b) where
9482instance EqP TR. TypeRep where
9583 eqp x y = TR. SomeTypeRep x == TR. SomeTypeRep y
9684
97- #if MIN_VERSION_base(4,18,0)
9885instance EqP TL. SChar where
9986 eqp x y = TL. fromSChar x == TL. fromSChar y
10087
@@ -103,7 +90,6 @@ instance EqP TL.SSymbol where
10390
10491instance EqP TN. SNat where
10592 eqp x y = TN. fromSNat x == TN. fromSNat y
106- #endif
10793
10894instance EqP Proxy where
10995 eqp _ _ = True
0 commit comments