Implement (Functor.<$) for Data.Functor.{Compose,Product,Sum}
authorSimon Jakobi <simon.jakobi@gmail.com>
Wed, 29 May 2019 15:20:41 +0000 (17:20 +0200)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Fri, 31 May 2019 06:02:33 +0000 (02:02 -0400)
This allows us to make use of the (<$) implementations of the
underlying functors.

libraries/base/Data/Functor/Compose.hs
libraries/base/Data/Functor/Product.hs
libraries/base/Data/Functor/Sum.hs

index 44570e1..d8369eb 100644 (file)
@@ -100,6 +100,7 @@ instance (Show1 f, Show1 g, Show a) => Show (Compose f g a) where
 -- | @since 4.9.0.0
 instance (Functor f, Functor g) => Functor (Compose f g) where
     fmap f (Compose x) = Compose (fmap (fmap f) x)
+    a <$ (Compose x) = Compose (fmap (a <$) x)
 
 -- | @since 4.9.0.0
 instance (Foldable f, Foldable g) => Foldable (Compose f g) where
index 8ed983b..a3678e9 100644 (file)
@@ -81,6 +81,7 @@ instance (Show1 f, Show1 g, Show a) => Show (Product f g a) where
 -- | @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)
 
 -- | @since 4.9.0.0
 instance (Foldable f, Foldable g) => Foldable (Product f g) where
index 337db02..f7d6178 100644 (file)
@@ -85,6 +85,9 @@ instance (Functor f, Functor g) => Functor (Sum f g) where
     fmap f (InL x) = InL (fmap f x)
     fmap f (InR y) = InR (fmap f y)
 
+    a <$ (InL x) = InL (a <$ x)
+    a <$ (InR y) = InR (a <$ y)
+
 -- | @since 4.9.0.0
 instance (Foldable f, Foldable g) => Foldable (Sum f g) where
     foldMap f (InL x) = foldMap f x