packages feed

bifunctors 5.4.1 → 5.4.2

raw patch · 6 files changed

+57/−30 lines, 6 filesdep ~template-haskellPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: template-haskell

API changes (from Hackage documentation)

- Data.Bifunctor.Biff: instance forall k k1 (p :: k -> * -> *) (f :: k1 -> k) (a :: k1) (g :: GHC.Types.* -> *). GHC.Base.Functor (p (f a)) => GHC.Generics.Generic1 (Data.Bifunctor.Biff.Biff p f g a)
- Data.Bifunctor.Flip: instance forall k k1 (p :: k -> k1 -> *) (a :: k1) (b :: k). GHC.Classes.Eq (p b a) => GHC.Classes.Eq (Data.Bifunctor.Flip.Flip p a b)
- Data.Bifunctor.Flip: instance forall k k1 (p :: k -> k1 -> *) (a :: k1) (b :: k). GHC.Classes.Ord (p b a) => GHC.Classes.Ord (Data.Bifunctor.Flip.Flip p a b)
- Data.Bifunctor.Flip: instance forall k k1 (p :: k -> k1 -> *) (a :: k1) (b :: k). GHC.Generics.Generic (Data.Bifunctor.Flip.Flip p a b)
- Data.Bifunctor.Flip: instance forall k k1 (p :: k -> k1 -> *) (a :: k1) (b :: k). GHC.Read.Read (p b a) => GHC.Read.Read (Data.Bifunctor.Flip.Flip p a b)
- Data.Bifunctor.Flip: instance forall k k1 (p :: k -> k1 -> *) (a :: k1) (b :: k). GHC.Show.Show (p b a) => GHC.Show.Show (Data.Bifunctor.Flip.Flip p a b)
- Data.Bifunctor.Product: instance forall k k1 (f :: k -> k1 -> *) (g :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Classes.Eq (f a b), GHC.Classes.Eq (g a b)) => GHC.Classes.Eq (Data.Bifunctor.Product.Product f g a b)
- Data.Bifunctor.Product: instance forall k k1 (f :: k -> k1 -> *) (g :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Classes.Ord (f a b), GHC.Classes.Ord (g a b)) => GHC.Classes.Ord (Data.Bifunctor.Product.Product f g a b)
- Data.Bifunctor.Product: instance forall k k1 (f :: k -> k1 -> *) (g :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Read.Read (f a b), GHC.Read.Read (g a b)) => GHC.Read.Read (Data.Bifunctor.Product.Product f g a b)
- Data.Bifunctor.Product: instance forall k k1 (f :: k -> k1 -> *) (g :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Show.Show (f a b), GHC.Show.Show (g a b)) => GHC.Show.Show (Data.Bifunctor.Product.Product f g a b)
- Data.Bifunctor.Product: instance forall k k1 (p :: k -> k1 -> *). Data.Bifunctor.Functor.BifunctorComonad (Data.Bifunctor.Product.Product p)
- Data.Bifunctor.Product: instance forall k k1 (p :: k -> k1 -> *). Data.Bifunctor.Functor.BifunctorFunctor (Data.Bifunctor.Product.Product p)
- Data.Bifunctor.Sum: instance forall k k1 (p :: k -> k1 -> *) (q :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Classes.Eq (p a b), GHC.Classes.Eq (q a b)) => GHC.Classes.Eq (Data.Bifunctor.Sum.Sum p q a b)
- Data.Bifunctor.Sum: instance forall k k1 (p :: k -> k1 -> *) (q :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Classes.Ord (p a b), GHC.Classes.Ord (q a b)) => GHC.Classes.Ord (Data.Bifunctor.Sum.Sum p q a b)
- Data.Bifunctor.Sum: instance forall k k1 (p :: k -> k1 -> *) (q :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Read.Read (p a b), GHC.Read.Read (q a b)) => GHC.Read.Read (Data.Bifunctor.Sum.Sum p q a b)
- Data.Bifunctor.Sum: instance forall k k1 (p :: k -> k1 -> *) (q :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Show.Show (p a b), GHC.Show.Show (q a b)) => GHC.Show.Show (Data.Bifunctor.Sum.Sum p q a b)
- Data.Bifunctor.Sum: instance forall k k1 (p :: k -> k1 -> *). Data.Bifunctor.Functor.BifunctorFunctor (Data.Bifunctor.Sum.Sum p)
- Data.Bifunctor.Sum: instance forall k k1 (p :: k -> k1 -> *). Data.Bifunctor.Functor.BifunctorMonad (Data.Bifunctor.Sum.Sum p)
- Data.Bitraversable: instance GHC.Base.Applicative Data.Bitraversable.Id
- Data.Bitraversable: instance GHC.Base.Functor Data.Bitraversable.Id
+ Data.Bifunctor.Biff: instance forall k k1 (p :: k1 -> * -> *) (f :: k -> k1) (a :: k) (g :: GHC.Types.* -> *). GHC.Base.Functor (p (f a)) => GHC.Generics.Generic1 (Data.Bifunctor.Biff.Biff p f g a)
+ Data.Bifunctor.Flip: instance forall k k1 (p :: k1 -> k -> *) (a :: k) (b :: k1). GHC.Classes.Eq (p b a) => GHC.Classes.Eq (Data.Bifunctor.Flip.Flip p a b)
+ Data.Bifunctor.Flip: instance forall k k1 (p :: k1 -> k -> *) (a :: k) (b :: k1). GHC.Classes.Ord (p b a) => GHC.Classes.Ord (Data.Bifunctor.Flip.Flip p a b)
+ Data.Bifunctor.Flip: instance forall k k1 (p :: k1 -> k -> *) (a :: k) (b :: k1). GHC.Generics.Generic (Data.Bifunctor.Flip.Flip p a b)
+ Data.Bifunctor.Flip: instance forall k k1 (p :: k1 -> k -> *) (a :: k) (b :: k1). GHC.Read.Read (p b a) => GHC.Read.Read (Data.Bifunctor.Flip.Flip p a b)
+ Data.Bifunctor.Flip: instance forall k k1 (p :: k1 -> k -> *) (a :: k) (b :: k1). GHC.Show.Show (p b a) => GHC.Show.Show (Data.Bifunctor.Flip.Flip p a b)
+ Data.Bifunctor.Product: instance forall k k1 (f :: k -> k1 -> *) (g :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Classes.Eq (g a b), GHC.Classes.Eq (f a b)) => GHC.Classes.Eq (Data.Bifunctor.Product.Product f g a b)
+ Data.Bifunctor.Product: instance forall k k1 (f :: k -> k1 -> *) (g :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Classes.Ord (g a b), GHC.Classes.Ord (f a b)) => GHC.Classes.Ord (Data.Bifunctor.Product.Product f g a b)
+ Data.Bifunctor.Product: instance forall k k1 (f :: k -> k1 -> *) (g :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Read.Read (g a b), GHC.Read.Read (f a b)) => GHC.Read.Read (Data.Bifunctor.Product.Product f g a b)
+ Data.Bifunctor.Product: instance forall k k1 (f :: k -> k1 -> *) (g :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Show.Show (g a b), GHC.Show.Show (f a b)) => GHC.Show.Show (Data.Bifunctor.Product.Product f g a b)
+ Data.Bifunctor.Product: instance forall k k1 (p :: k1 -> k -> *). Data.Bifunctor.Functor.BifunctorComonad (Data.Bifunctor.Product.Product p)
+ Data.Bifunctor.Product: instance forall k k1 (p :: k1 -> k -> *). Data.Bifunctor.Functor.BifunctorFunctor (Data.Bifunctor.Product.Product p)
+ Data.Bifunctor.Sum: instance forall k k1 (p :: k -> k1 -> *) (q :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Classes.Eq (q a b), GHC.Classes.Eq (p a b)) => GHC.Classes.Eq (Data.Bifunctor.Sum.Sum p q a b)
+ Data.Bifunctor.Sum: instance forall k k1 (p :: k -> k1 -> *) (q :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Classes.Ord (q a b), GHC.Classes.Ord (p a b)) => GHC.Classes.Ord (Data.Bifunctor.Sum.Sum p q a b)
+ Data.Bifunctor.Sum: instance forall k k1 (p :: k -> k1 -> *) (q :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Read.Read (q a b), GHC.Read.Read (p a b)) => GHC.Read.Read (Data.Bifunctor.Sum.Sum p q a b)
+ Data.Bifunctor.Sum: instance forall k k1 (p :: k -> k1 -> *) (q :: k -> k1 -> *) (a :: k) (b :: k1). (GHC.Show.Show (q a b), GHC.Show.Show (p a b)) => GHC.Show.Show (Data.Bifunctor.Sum.Sum p q a b)
+ Data.Bifunctor.Sum: instance forall k k1 (p :: k1 -> k -> *). Data.Bifunctor.Functor.BifunctorFunctor (Data.Bifunctor.Sum.Sum p)
+ Data.Bifunctor.Sum: instance forall k k1 (p :: k1 -> k -> *). Data.Bifunctor.Functor.BifunctorMonad (Data.Bifunctor.Sum.Sum p)
- Data.Bitraversable: bifoldMapDefault :: (Bitraversable t, Monoid m) => (a -> m) -> (b -> m) -> t a b -> m
+ Data.Bitraversable: bifoldMapDefault :: forall t m a b. (Bitraversable t, Monoid m) => (a -> m) -> (b -> m) -> t a b -> m
- Data.Bitraversable: bimapDefault :: Bitraversable t => (a -> b) -> (c -> d) -> t a c -> t b d
+ Data.Bitraversable: bimapDefault :: forall t a b c d. Bitraversable t => (a -> b) -> (c -> d) -> t a c -> t b d

Files

.travis.yml view
@@ -31,9 +31,12 @@     - env: CABALVER=1.22 GHCVER=7.10.3       compiler: ": #GHC 7.10.3"       addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3], sources: [hvr-ghc]}}-    - env: CABALVER=1.24 GHCVER=8.0.1-      compiler: ": #GHC 8.0.1"-      addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.1], sources: [hvr-ghc]}}+    - env: CABALVER=1.24 GHCVER=8.0.2+      compiler: ": #GHC 8.0.2"+      addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2], sources: [hvr-ghc]}}+    - env: CABALVER=2.0 GHCVER=8.2.1+      compiler: ": #GHC 8.2.1"+      addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.1], sources: [hvr-ghc]}}     - env: CABALVER=head GHCVER=head       compiler: ": #GHC head"       addons: {apt: {packages: [cabal-install-head,ghc-head], sources: [hvr-ghc]}}
CHANGELOG.markdown view
@@ -1,3 +1,8 @@+5.4.2+-----+* Make `deriveBitraversable` use `liftA2` in derived implementations of `bitraverse` when possible, now that `liftA2` is a class method of `Applicative` (as of GHC 8.2)+* Backport slightly more efficient implementations of `bimapDefault` and `bifoldMapDefault`+ 5.4.1 ----- * Add explicit `Safe`, `Trustworthy`, and `Unsafe` annotations. In particular, annotate the `Data.Bifoldable` module as `Trustworthy` (previously, it was inferred to be `Unsafe`).
bifunctors.cabal view
@@ -1,6 +1,6 @@ name:          bifunctors category:      Data, Functors-version:       5.4.1+version:       5.4.2 license:       BSD3 cabal-version: >= 1.8 license-file:  LICENSE@@ -13,12 +13,12 @@ synopsis:      Bifunctors description:   Bifunctors build-type:    Simple-tested-with:   GHC == 7.0.4, GHC == 7.2.2, GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.1+tested-with:   GHC == 7.0.4, GHC == 7.2.2, GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2 extra-source-files: .travis.yml CHANGELOG.markdown README.markdown  source-repository head   type: git-  location: git://github.com/ekmett/bifunctors.git+  location: https://github.com/ekmett/bifunctors.git  flag semigroups   default: True@@ -43,7 +43,7 @@     base-orphans        >= 0.5.2 && < 1,     comonad             >= 4     && < 6,     containers          >= 0.1   && < 0.6,-    template-haskell    >= 2.4   && < 2.12,+    template-haskell    >= 2.4   && < 2.13,     transformers        >= 0.2   && < 0.6,     transformers-compat >= 0.5   && < 0.6 @@ -99,6 +99,7 @@     bifunctors,     hspec               >= 1.8,     QuickCheck          >= 2   && < 3,+    template-haskell,     transformers,     transformers-compat 
old-src/ghc801/Data/Bitraversable.hs view
@@ -1,10 +1,9 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-}  #if __GLASGOW_HASKELL__ >= 704-{-# LANGUAGE Safe #-}-#elif __GLASGOW_HASKELL__ >= 702 {-# LANGUAGE Trustworthy #-} #endif @@ -39,8 +38,15 @@ import Data.Bifunctor import Data.Bifoldable import Data.Functor.Constant+import Data.Functor.Identity import Data.Orphans () +#if MIN_VERSION_base(4,7,0)+import Data.Coerce (coerce)+#else+import Unsafe.Coerce (unsafeCoerce)+#endif+ #if !(MIN_VERSION_base(4,8,0)) import Data.Monoid #endif@@ -69,7 +75,7 @@ -- element on which an action can be performed, 'Bitraversable' data structures -- have two such varieties of elements. ----- A definition of 'traverse' must satisfy the following laws:+-- A definition of 'bitraverse' must satisfy the following laws: -- -- [/naturality/] --   @'bitraverse' (t . f) (t . g) ≡ t . 'bitraverse' f g@@@ -295,24 +301,29 @@ bimapAccumR f g s t = runStateR (bitraverse (StateR . flip f) (StateR . flip g) t) s {-# INLINE bimapAccumR #-} -newtype Id a = Id { getId :: a }--instance Functor Id where-  fmap f (Id x) = Id (f x)-  {-# INLINE fmap #-}--instance Applicative Id where-  pure = Id-  {-# INLINE pure #-}-  Id f <*> Id x = Id (f x)-  {-# INLINE (<*>) #-}- -- | A default definition of 'bimap' in terms of the 'Bitraversable' operations.-bimapDefault :: Bitraversable t => (a -> b) -> (c -> d) -> t a c -> t b d-bimapDefault f g = getId . bitraverse (Id . f) (Id . g)+--+-- @'bimapDefault' f g ≡+--     'runIdentity' . 'bitraverse' ('Identity' . f) ('Identity' . g)@+bimapDefault :: forall t a b c d . Bitraversable t+             => (a -> b) -> (c -> d) -> t a c -> t b d+bimapDefault = coerce+  (bitraverse :: (a -> Identity b)+              -> (c -> Identity d) -> t a c -> Identity (t b d)) {-# INLINE bimapDefault #-}  -- | A default definition of 'bifoldMap' in terms of the 'Bitraversable' operations.-bifoldMapDefault :: (Bitraversable t, Monoid m) => (a -> m) -> (b -> m) -> t a b -> m-bifoldMapDefault f g = getConst . bitraverse (Const . f) (Const . g)+--+-- @'bifoldMapDefault' f g ≡+--    'getConst' . 'bitraverse' ('Const' . f) ('Const' . g)@+bifoldMapDefault :: forall t m a b . (Bitraversable t, Monoid m)+                 => (a -> m) -> (b -> m) -> t a b -> m+bifoldMapDefault = coerce+  (bitraverse :: (a -> Const m ())+              -> (b -> Const m ()) -> t a b -> Const m (t () ())) {-# INLINE bifoldMapDefault #-}++#if !(MIN_VERSION_base(4,7,0))+coerce :: a -> b+coerce = unsafeCoerce+#endif
src/Data/Bifunctor/TH.hs view
@@ -1189,9 +1189,10 @@     conExp <- conExpQ      let go :: [Exp] -> Exp-        go []     = VarE pureValName `AppE` conExp-        go (e:es) = foldl' (\e1 e2 -> InfixE (Just e1) (VarE apValName) (Just e2))-          (VarE fmapValName `AppE` conExp `AppE` e) es+        go []  = VarE pureValName `AppE` conExp+        go [e] = VarE fmapValName `AppE` conExp `AppE` e+        go (e1:e2:es) = foldl' (\se1 se2 -> InfixE (Just se1) (VarE apValName) (Just se2))+          (VarE liftA2ValName `AppE` conExp `AppE` e1 `AppE` e2) es      return . go . rights $ ess 
src/Data/Bifunctor/TH/Internal.hs view
@@ -592,6 +592,9 @@ apValName :: Name apValName = mkNameG_v "base" "GHC.Base" "<*>" +liftA2ValName :: Name+liftA2ValName = mkNameG_v "base" "GHC.Base" "liftA2"+ mappendValName :: Name mappendValName = mkNameG_v "base" "GHC.Base" "mappend" @@ -610,6 +613,9 @@ apValName :: Name apValName = mkNameG_v "base" "Control.Applicative" "<*>" +liftA2ValName :: Name+liftA2ValName = mkNameG_v "base" "Control.Applicative" "liftA2"+ mappendValName :: Name mappendValName = mkNameG_v "base" "Data.Monoid" "mappend" @@ -617,7 +623,7 @@ memptyValName = mkNameG_v "base" "Data.Monoid" "mempty" #endif -#if __GLASGOW_HASKELL__ >= 801+#if MIN_VERSION_base(4,10,0) bifoldableTypeName :: Name bifoldableTypeName = mkNameG_tc "base" "Data.Bifoldable" "Bifoldable"