From a8a7acaed7d11bee2ae5151c6e1954c15b250d34 Mon Sep 17 00:00:00 2001 From: Rahul Muttineni Date: Sat, 27 Jan 2018 00:46:55 +0530 Subject: [PATCH] Re-use instance definitions from other typeclasses for Bazaar/Context --- src/Control/Lens/Internal/Bazaar.hs | 14 +++++++------- src/Control/Lens/Internal/Context.hs | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Control/Lens/Internal/Bazaar.hs b/src/Control/Lens/Internal/Bazaar.hs index 9b9e6357f..89447c453 100644 --- a/src/Control/Lens/Internal/Bazaar.hs +++ b/src/Control/Lens/Internal/Bazaar.hs @@ -96,7 +96,7 @@ instance Conjoined p => IndexedComonad (Bazaar p) where {-# INLINE iduplicate #-} instance Corepresentable p => Sellable p (Bazaar p) where - sell = cotabulate $ \ w -> Bazaar $ tabulate $ \k -> pure (cosieve k w) + sell = cotabulate $ \ w -> Bazaar (`cosieve` w) {-# INLINE sell #-} instance Profunctor p => Bizarre p (Bazaar p) where @@ -108,7 +108,7 @@ instance Functor (Bazaar p a b) where {-# INLINE fmap #-} instance Apply (Bazaar p a b) where - Bazaar mf <.> Bazaar ma = Bazaar $ \ pafb -> mf pafb <*> ma pafb + (<.>) = (<*>) {-# INLINE (<.>) #-} instance Applicative (Bazaar p a b) where @@ -171,11 +171,11 @@ instance Functor (BazaarT p g a b) where {-# INLINE fmap #-} instance Apply (BazaarT p g a b) where - BazaarT mf <.> BazaarT ma = BazaarT $ \ pafb -> mf pafb <*> ma pafb + (<.>) = (<*>) {-# INLINE (<.>) #-} instance Applicative (BazaarT p g a b) where - pure a = BazaarT $ tabulate $ \_ -> pure (pure a) + pure a = BazaarT $ \_ -> pure a {-# INLINE pure #-} BazaarT mf <*> BazaarT ma = BazaarT $ \ pafb -> mf pafb <*> ma pafb {-# INLINE (<*>) #-} @@ -252,7 +252,7 @@ instance Conjoined p => IndexedComonad (Bazaar1 p) where {-# INLINE iduplicate #-} instance Corepresentable p => Sellable p (Bazaar1 p) where - sell = cotabulate $ \ w -> Bazaar1 $ tabulate $ \k -> pure (cosieve k w) + sell = cotabulate $ \ w -> Bazaar1 (`cosieve` w) {-# INLINE sell #-} instance Profunctor p => Bizarre1 p (Bazaar1 p) where @@ -274,7 +274,7 @@ instance (a ~ b, Conjoined p) => Comonad (Bazaar1 p a b) where {-# INLINE duplicate #-} instance (a ~ b, Conjoined p) => ComonadApply (Bazaar1 p a b) where - Bazaar1 mf <@> Bazaar1 ma = Bazaar1 $ \ pafb -> mf pafb <.> ma pafb + (<@>) = (<.>) {-# INLINE (<@>) #-} ------------------------------------------------------------------------------ @@ -331,7 +331,7 @@ instance (a ~ b, Conjoined p) => Comonad (BazaarT1 p g a b) where {-# INLINE duplicate #-} instance (a ~ b, Conjoined p) => ComonadApply (BazaarT1 p g a b) where - BazaarT1 mf <@> BazaarT1 ma = BazaarT1 $ \ pafb -> mf pafb <.> ma pafb + (<@>) = (<.>) {-# INLINE (<@>) #-} instance (Profunctor p, Contravariant g) => Contravariant (BazaarT1 p g a b) where diff --git a/src/Control/Lens/Internal/Context.hs b/src/Control/Lens/Internal/Context.hs index dd9a13a48..515624f56 100644 --- a/src/Control/Lens/Internal/Context.hs +++ b/src/Control/Lens/Internal/Context.hs @@ -172,15 +172,15 @@ instance IndexedComonadStore Context where {-# INLINE context #-} instance Functor (Context a b) where - fmap f (Context g t) = Context (f . g) t + fmap = ifmap {-# INLINE fmap #-} instance a ~ b => Comonad (Context a b) where - extract (Context f a) = f a + extract = iextract {-# INLINE extract #-} - duplicate (Context f a) = Context (Context f) a + duplicate = iduplicate {-# INLINE duplicate #-} - extend g (Context f a) = Context (g . Context f) a + extend = iextend {-# INLINE extend #-} instance a ~ b => ComonadStore a (Context a b) where