optics-extra 0.4.1 → 0.4.2
raw patch · 3 files changed
+54/−36 lines, 3 filesdep ~basedep ~mtldep ~transformersPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, mtl, transformers
API changes (from Hackage documentation)
Files
- CHANGELOG.md +10/−0
- optics-extra.cabal +3/−3
- src/Optics/Zoom.hs +41/−33
CHANGELOG.md view
@@ -1,3 +1,13 @@+# optics-extra-0.4.2 (2022-05-19)+* Allow `transformers-0.6` and `mtl-2.3`++ Note that `optics-extra` no longer defines `Zoom` instances for `ErrorT` or `ListT` when+ building with `mtl-2.3` or later. This is because `MonadState` is a superclass of+ `Zoom`, and the `MonadState` instances for `ErrorT` and `ListT` were removed in+ `mtl-2.3`. Be watchful of this if you build `optics-extra` with `mtl-2.3` (or+ later) combined with an older version of `transformers` (pre-0.6) that defines+ `ErrorT` or `ListT`. Similarly for `Magnify` and `MagnifyMany`.+ # optics-extra-0.4.1 (2022-03-22) * Add support for GHC-9.2
optics-extra.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: optics-extra-version: 0.4.1+version: 0.4.2 license: BSD-3-Clause license-file: LICENSE build-type: Simple@@ -67,10 +67,10 @@ , containers >= 0.5.10.2 && <0.7 , hashable >= 1.1.1 && <1.5 , indexed-profunctors >= 0.1 && <0.2- , mtl >= 2.2.2 && <2.3+ , mtl >= 2.2.2 && <2.4 , optics-core >= 0.4.1 && <0.4.2 , text >= 1.2 && <1.3 || >=2.0 && <2.1- , transformers >= 0.5 && <0.6+ , transformers >= 0.5 && <0.7 , unordered-containers >= 0.2.6 && <0.3 , vector >= 0.11 && <0.13 , indexed-traversable-instances >=0.1 && <0.2
src/Optics/Zoom.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -fno-warn-warnings-deprecations #-} module Optics.Zoom@@ -11,10 +12,8 @@ import Control.Monad.Reader (ReaderT (..), MonadReader) import Control.Monad.State (MonadState (..))-import Control.Monad.Trans.Error (Error, ErrorT (..)) import Control.Monad.Trans.Except (ExceptT (..), runExceptT) import Control.Monad.Trans.Identity (IdentityT (..))-import Control.Monad.Trans.List (ListT (..)) import Control.Monad.Trans.Maybe (MaybeT (..)) import qualified Control.Monad.Trans.RWS.Lazy as L import qualified Control.Monad.Trans.RWS.Strict as S@@ -23,6 +22,11 @@ import qualified Control.Monad.Trans.Writer.Lazy as L import qualified Control.Monad.Trans.Writer.Strict as S +#if !MIN_VERSION_transformers(0,6,0)+import Control.Monad.Trans.Error (Error, ErrorT (..))+import Control.Monad.Trans.List (ListT (..))+#endif+ import Optics.Core import Optics.Internal.Utils import Optics.Extra.Internal.Zoom@@ -158,14 +162,6 @@ {-# INLINE zoomMaybe #-} {-# INLINE zoomMany #-} -instance Zoom m n s t => Zoom (ListT m) (ListT n) s t where- zoom o = ListT #. zoom o .# runListT- zoomMaybe o = ListT #. fmap sequenceA . zoomMaybe o .# runListT- zoomMany o = ListT #. zoomMany o .# runListT- {-# INLINE zoom #-}- {-# INLINE zoomMaybe #-}- {-# INLINE zoomMany #-}- instance Zoom m n s t => Zoom (MaybeT m) (MaybeT n) s t where zoom o = MaybeT #. zoom o .# runMaybeT@@ -177,6 +173,18 @@ {-# INLINE zoomMaybe #-} {-# INLINE zoomMany #-} +instance Zoom m n s t => Zoom (ExceptT e m) (ExceptT e n) s t where+ zoom o =+ ExceptT #. zoom o .# runExceptT+ zoomMaybe o =+ ExceptT #. fmap (getErr . shuffleErr) . zoomMaybe o . fmap Err .# runExceptT+ zoomMany o =+ ExceptT #. fmap getErr . zoomMany o . fmap Err .# runExceptT+ {-# INLINE zoom #-}+ {-# INLINE zoomMaybe #-}+ {-# INLINE zoomMany #-}++#if !MIN_VERSION_transformers(0,6,0) && !MIN_VERSION_mtl(2,3,0) instance (Error e, Zoom m n s t) => Zoom (ErrorT e m) (ErrorT e n) s t where zoom o = ErrorT #. zoom o .# runErrorT@@ -188,16 +196,14 @@ {-# INLINE zoomMaybe #-} {-# INLINE zoomMany #-} -instance Zoom m n s t => Zoom (ExceptT e m) (ExceptT e n) s t where- zoom o =- ExceptT #. zoom o .# runExceptT- zoomMaybe o =- ExceptT #. fmap (getErr . shuffleErr) . zoomMaybe o . fmap Err .# runExceptT- zoomMany o =- ExceptT #. fmap getErr . zoomMany o . fmap Err .# runExceptT+instance Zoom m n s t => Zoom (ListT m) (ListT n) s t where+ zoom o = ListT #. zoom o .# runListT+ zoomMaybe o = ListT #. fmap sequenceA . zoomMaybe o .# runListT+ zoomMany o = ListT #. zoomMany o .# runListT {-# INLINE zoom #-} {-# INLINE zoomMaybe #-} {-# INLINE zoomMany #-}+#endif ------------------------------------------------------------------------------ -- Magnify@@ -367,16 +373,6 @@ magnifyMany o = L.WriterT #. magnifyMany o .# L.runWriterT {-# INLINE magnifyMany #-} -instance Magnify m n b a => Magnify (ListT m) (ListT n) b a where- magnify o = ListT #. magnify o .# runListT- magnifyMaybe o = ListT #. fmap sequenceA . magnifyMaybe o .# runListT- {-# INLINE magnify #-}- {-# INLINE magnifyMaybe #-}--instance MagnifyMany m n b a => MagnifyMany (ListT m) (ListT n) b a where- magnifyMany o = ListT #. magnifyMany o .# runListT- {-# INLINE magnifyMany #-}- instance Magnify m n b a => Magnify (MaybeT m) (MaybeT n) b a where magnify o = MaybeT #. magnify o .# runMaybeT magnifyMaybe o =@@ -388,6 +384,18 @@ magnifyMany o = MaybeT #. fmap getMay . magnifyMany o . fmap May .# runMaybeT {-# INLINE magnifyMany #-} +instance Magnify m n b a => Magnify (ExceptT e m) (ExceptT e n) b a where+ magnify o = ExceptT #. magnify o .# runExceptT+ magnifyMaybe o =+ ExceptT #. fmap (getErr . shuffleErr) . magnifyMaybe o . fmap Err .# runExceptT+ {-# INLINE magnify #-}+ {-# INLINE magnifyMaybe #-}++instance MagnifyMany m n b a => MagnifyMany (ExceptT e m) (ExceptT e n) b a where+ magnifyMany o = ExceptT #. fmap getErr . magnifyMany o . fmap Err .# runExceptT+ {-# INLINE magnifyMany #-}++#if !MIN_VERSION_transformers(0,6,0) instance (Error e, Magnify m n b a) => Magnify (ErrorT e m) (ErrorT e n) b a where magnify o = ErrorT #. magnify o .# runErrorT magnifyMaybe o =@@ -401,13 +409,13 @@ magnifyMany o = ErrorT #. fmap getErr . magnifyMany o . fmap Err .# runErrorT {-# INLINE magnifyMany #-} -instance Magnify m n b a => Magnify (ExceptT e m) (ExceptT e n) b a where- magnify o = ExceptT #. magnify o .# runExceptT- magnifyMaybe o =- ExceptT #. fmap (getErr . shuffleErr) . magnifyMaybe o . fmap Err .# runExceptT+instance Magnify m n b a => Magnify (ListT m) (ListT n) b a where+ magnify o = ListT #. magnify o .# runListT+ magnifyMaybe o = ListT #. fmap sequenceA . magnifyMaybe o .# runListT {-# INLINE magnify #-} {-# INLINE magnifyMaybe #-} -instance MagnifyMany m n b a => MagnifyMany (ExceptT e m) (ExceptT e n) b a where- magnifyMany o = ExceptT #. fmap getErr . magnifyMany o . fmap Err .# runExceptT+instance MagnifyMany m n b a => MagnifyMany (ListT m) (ListT n) b a where+ magnifyMany o = ListT #. magnifyMany o .# runListT {-# INLINE magnifyMany #-}+#endif