assoc 1.0.2 → 1.1
raw patch · 4 files changed
+50/−39 lines, 4 filesdep +bifunctor-classes-compatdep −bifunctorsdep ~basePVP ok
version bump matches the API change (PVP)
Dependencies added: bifunctor-classes-compat
Dependencies removed: bifunctors
Dependency ranges changed: base
API changes (from Hackage documentation)
- Data.Bifunctor.Assoc: instance Data.Bifunctor.Assoc.Assoc p => Data.Bifunctor.Assoc.Assoc (Data.Bifunctor.Flip.Flip p)
- Data.Bifunctor.Swap: instance (Data.Bifunctor.Swap.Swap p, Data.Bifunctor.Swap.Swap q) => Data.Bifunctor.Swap.Swap (Data.Bifunctor.Product.Product p q)
- Data.Bifunctor.Swap: instance (Data.Bifunctor.Swap.Swap p, Data.Bifunctor.Swap.Swap q) => Data.Bifunctor.Swap.Swap (Data.Bifunctor.Sum.Sum p q)
- Data.Bifunctor.Swap: instance (GHC.Base.Functor f, Data.Bifunctor.Swap.Swap p) => Data.Bifunctor.Swap.Swap (Data.Bifunctor.Tannen.Tannen f p)
- Data.Bifunctor.Swap: instance (f Data.Type.Equality.~ g, GHC.Base.Functor f, Data.Bifunctor.Swap.Swap p) => Data.Bifunctor.Swap.Swap (Data.Bifunctor.Biff.Biff p f g)
- Data.Bifunctor.Swap: instance Data.Bifunctor.Swap.Swap p => Data.Bifunctor.Swap.Swap (Data.Bifunctor.Flip.Flip p)
Files
- CHANGELOG.md +7/−0
- assoc.cabal +22/−7
- src/Data/Bifunctor/Assoc.hs +14/−10
- src/Data/Bifunctor/Swap.hs +7/−22
CHANGELOG.md view
@@ -1,3 +1,10 @@+## 1.1++- Depend on `bifunctor-classes-compat` only.+ Instances for types defined in `bifunctors` package are moved there.+ With this change `assoc` only depends on `base` and `tagged`.+- Mark modules as explicitly Safe+ ## 1.0.2 - Add 'Swap' instances for more n-tuples
assoc.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.12 name: assoc-version: 1.0.2+version: 1.1 license: BSD3 license-file: LICENSE synopsis: swap and assoc: Symmetric and Semigroupy Bifunctors@@ -27,21 +27,36 @@ || ==8.2.2 || ==8.4.4 || ==8.6.5- || ==8.8.3- || ==8.10.1+ || ==8.8.4+ || ==8.10.7+ || ==9.0.2+ || ==9.2.7+ || ==9.4.4+ || ==9.6.1 , GHCJS ==8.4 source-repository head type: git location: https://github.com/phadej/assoc.git +flag tagged+ default: True+ manual: True+ description:+ You can disable the use of the `tagged` package using `-f-tagged`.+ .+ Disabing this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.+ library default-language: Haskell2010 hs-source-dirs: src- build-depends:- base >=4.3 && <4.15- , bifunctors >=5.5.5 && <5.6- , tagged >=0.8.6 && <0.9+ build-depends: base >=4.3 && <4.19++ if flag(tagged)+ build-depends: tagged >=0.8.6 && <0.9++ if !impl(ghc >=8.0)+ build-depends: bifunctor-classes-compat >=0.1 && <0.2 exposed-modules: Data.Bifunctor.Assoc
src/Data/Bifunctor/Assoc.hs view
@@ -1,14 +1,20 @@+{-# LANGUAGE CPP #-}+#if __GLASGOW_HASKELL__ >=704+{-# LANGUAGE Safe #-}+#elif __GLASGOW_HASKELL__ >=702+{-# LANGUAGE Trustworthy #-}+#endif module Data.Bifunctor.Assoc ( Assoc (..), ) where -import Control.Applicative (Const (..))-import Data.Bifunctor (Bifunctor (..))-import Data.Bifunctor.Flip (Flip (..))-import Data.Bifunctor.Product (Product (..))-import Data.Bifunctor.Tannen (Tannen (..))-import Data.Tagged (Tagged (..))+import Control.Applicative (Const (..))+import Data.Bifunctor (Bifunctor (..)) +#ifdef MIN_VERSION_tagged+import Data.Tagged (Tagged (..))+#endif+ -- | "Semigroup-y" 'Bifunctor's. -- -- @@@ -41,13 +47,11 @@ assoc (Const (Const a)) = Const a unassoc (Const a) = Const (Const a) +#ifdef MIN_VERSION_tagged instance Assoc Tagged where assoc (Tagged a) = Tagged (Tagged a) unassoc (Tagged (Tagged a)) = Tagged a--instance Assoc p => Assoc (Flip p) where- assoc = Flip . first Flip . unassoc . second runFlip . runFlip- unassoc = Flip . second Flip . assoc . first runFlip . runFlip+#endif -- $setup --
src/Data/Bifunctor/Swap.hs view
@@ -1,14 +1,15 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE TypeFamilies #-}+#if __GLASGOW_HASKELL__ >=704+{-# LANGUAGE Safe #-}+#elif __GLASGOW_HASKELL__ >=702+{-# LANGUAGE Trustworthy #-}+#endif module Data.Bifunctor.Swap ( Swap (..), ) where -import Data.Bifunctor (Bifunctor (..))-import Data.Bifunctor.Biff (Biff (..))-import Data.Bifunctor.Flip (Flip (..))-import Data.Bifunctor.Product (Product (..))-import Data.Bifunctor.Sum (Sum (..))-import Data.Bifunctor.Tannen (Tannen (..))+import Data.Bifunctor (Bifunctor (..)) import qualified Data.Tuple @@ -41,22 +42,6 @@ instance Swap Either where swap (Left x) = Right x swap (Right x) = Left x--instance Swap p => Swap (Flip p) where- swap = Flip . swap . runFlip--instance (Swap p, Swap q) => Swap (Product p q) where- swap (Pair p q) = Pair (swap p) (swap q)--instance (Swap p, Swap q) => Swap (Sum p q) where- swap (L2 p) = L2 (swap p)- swap (R2 q) = R2 (swap q)--instance (Functor f, Swap p) => Swap (Tannen f p) where- swap = Tannen . fmap swap . runTannen--instance (f ~ g, Functor f, Swap p) => Swap (Biff p f g) where- swap = Biff . swap . runBiff instance Swap ((,,) x) where swap (x,a,b) = (x,b,a)