diff options
Diffstat (limited to 'libraries/base/Data/Functor/Product.hs')
-rw-r--r-- | libraries/base/Data/Functor/Product.hs | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/libraries/base/Data/Functor/Product.hs b/libraries/base/Data/Functor/Product.hs index 114ad6a699..efa6b9977a 100644 --- a/libraries/base/Data/Functor/Product.hs +++ b/libraries/base/Data/Functor/Product.hs @@ -2,6 +2,7 @@ {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE Safe #-} +{-# LANGUAGE StandaloneDeriving #-} ----------------------------------------------------------------------------- -- | -- Module : Data.Functor.Product @@ -28,7 +29,7 @@ import Control.Monad.Zip (MonadZip(mzipWith)) import Data.Data (Data) import Data.Functor.Classes import GHC.Generics (Generic, Generic1) -import Text.Read (Read(..), readListDefault, readListPrecDefault) +import Text.Read () -- | Lifted product of functors. data Product f g a = Pair (f a) (g a) @@ -37,6 +38,15 @@ data Product f g a = Pair (f a) (g a) , Generic1 -- ^ @since 4.9.0.0 ) +-- | @since 4.18.0.0 +deriving instance (Eq (f a), Eq (g a)) => Eq (Product f g a) +-- | @since 4.18.0.0 +deriving instance (Ord (f a), Ord (g a)) => Ord (Product f g a) +-- | @since 4.18.0.0 +deriving instance (Read (f a), Read (g a)) => Read (Product f g a) +-- | @since 4.18.0.0 +deriving instance (Show (f a), Show (g a)) => Show (Product f g a) + -- | @since 4.9.0.0 instance (Eq1 f, Eq1 g) => Eq1 (Product f g) where liftEq eq (Pair x1 y1) (Pair x2 y2) = liftEq eq x1 x2 && liftEq eq y1 y2 @@ -60,25 +70,6 @@ instance (Show1 f, Show1 g) => Show1 (Product f g) where showsBinaryWith (liftShowsPrec sp sl) (liftShowsPrec sp sl) "Pair" d x y -- | @since 4.9.0.0 -instance (Eq1 f, Eq1 g, Eq a) => Eq (Product f g a) - where (==) = eq1 - --- | @since 4.9.0.0 -instance (Ord1 f, Ord1 g, Ord a) => Ord (Product f g a) where - compare = compare1 - --- | @since 4.9.0.0 -instance (Read1 f, Read1 g, Read a) => Read (Product f g a) where - readPrec = readPrec1 - - readListPrec = readListPrecDefault - readList = readListDefault - --- | @since 4.9.0.0 -instance (Show1 f, Show1 g, Show a) => Show (Product f g a) where - showsPrec = showsPrec1 - --- | @since 4.9.0.0 instance (Functor f, Functor g) => Functor (Product f g) where fmap f (Pair x y) = Pair (fmap f x) (fmap f y) a <$ (Pair x y) = Pair (a <$ x) (a <$ y) |