packages feed

optics-extra 0.3 → 0.4

raw patch · 20 files changed

+142/−163 lines, 20 filesdep +indexed-traversable-instancesdep ~arraydep ~basedep ~containers

Dependencies added: indexed-traversable-instances

Dependency ranges changed: array, base, containers, optics-core, text

Files

CHANGELOG.md view
@@ -1,3 +1,6 @@+# optics-extra-0.4 (2021-02-22)+* Add support for GHC-9.0+ # optics-extra-0.3 (2020-04-15) * `optics-core-0.3` compatible release * GHC-8.10 support
optics-extra.cabal view
@@ -1,12 +1,12 @@ name:          optics-extra-version:       0.3+version:       0.4 license:       BSD3 license-file:  LICENSE build-type:    Simple cabal-version: 1.24 maintainer:    optics@well-typed.com author:        Andrzej Rybczak-tested-with:   ghc ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.3 || ==8.10.1, GHCJS ==8.4+tested-with:   ghc ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.3, GHCJS ==8.4 synopsis:      Extra utilities and instances for optics-core category:      Data, Optics, Lenses description:@@ -30,18 +30,19 @@   hs-source-dirs:   src   ghc-options:      -Wall -  build-depends: base                   >= 4.9       && <5-               , array                  >= 0.5.1.1   && <0.6-               , bytestring             >= 0.10.8    && <0.11-               , containers             >= 0.5.7.1   && <0.7+  build-depends: base                   >= 4.10      && <5+               , array                  >= 0.5.2.0   && <0.6+               , bytestring             >= 0.10.8    && <0.12+               , containers             >= 0.5.10.2  && <0.7                , hashable               >= 1.1.1     && <1.4                , indexed-profunctors    >= 0.1       && <0.2                , mtl                    >= 2.2.2     && <2.3-               , optics-core            >= 0.3       && <0.3.1+               , optics-core            >= 0.4       && <0.4.1                , text                   >= 1.2       && <1.3                , transformers           >= 0.5       && <0.6                , unordered-containers   >= 0.2.6     && <0.3                , vector                 >= 0.11      && <0.13+               , indexed-traversable-instances >=0.1 && <0.2    exposed-modules: Optics.Extra 
src/Data/ByteString/Lazy/Optics.hs view
@@ -8,8 +8,9 @@   , pattern Chars   ) where -import Data.ByteString.Lazy       as Words-import Data.ByteString.Lazy.Char8 as Char8+import Data.ByteString.Lazy (ByteString)+import qualified Data.ByteString.Lazy       as Words+import qualified Data.ByteString.Lazy.Char8 as Char8 import Data.Int (Int64) import Data.Word (Word8) 
src/Data/ByteString/Optics.hs view
@@ -8,10 +8,10 @@   , pattern Chars   ) where -import Data.ByteString as Strict-import Data.ByteString.Lazy as Lazy-import Data.Int-import Data.Word+import qualified Data.ByteString as Strict+import qualified Data.ByteString.Lazy as Lazy+import Data.Int (Int64)+import Data.Word (Word8) import qualified Data.ByteString.Lazy.Optics as Lazy import qualified Data.ByteString.Strict.Optics as Strict 
src/Data/ByteString/Strict/Optics.hs view
@@ -7,10 +7,11 @@   , pattern Chars   ) where -import Data.ByteString       as Words-import Data.ByteString.Char8 as Char8-import Data.Int-import Data.Word+import Data.ByteString (ByteString)+import qualified Data.ByteString       as Words+import qualified Data.ByteString.Char8 as Char8+import Data.Int (Int64)+import Data.Word (Word8)  import Optics.Core import Optics.Extra.Internal.ByteString
src/Data/HashMap/Optics.hs view
@@ -47,8 +47,9 @@   , at'   ) where -import Data.Hashable-import Data.HashMap.Lazy as HashMap+import Data.Hashable (Hashable)+import Data.HashMap.Lazy (HashMap)+import qualified Data.HashMap.Lazy as HashMap  import Optics.Core 
src/Data/HashSet/Optics.hs view
@@ -10,8 +10,9 @@   , setOf   ) where -import Data.Hashable-import Data.HashSet as HashSet+import Data.Hashable (Hashable)+import Data.HashSet (HashSet)+import qualified Data.HashSet as HashSet  import Optics.Fold import Optics.Optic@@ -24,7 +25,7 @@ -- but you can manipulate it by reading using 'Optics.Fold.folded' and -- reindexing it via 'setmapped'. ----- >>> over setmapped (+1) (fromList [1,2,3,4])+-- >>> over setmapped (+1) (HashSet.fromList [1,2,3,4]) -- fromList [2,3,4,5] setmapped :: (Eq b, Hashable b) => Setter (HashSet a) (HashSet b) a b setmapped = sets HashSet.map
src/Data/Text/Lazy/Optics.hs view
@@ -21,10 +21,11 @@   , pattern Text   ) where -import Data.ByteString.Lazy as ByteString-import Data.Text.Lazy as Text-import Data.Text.Lazy.Builder-import Data.Text.Lazy.Encoding+import Data.ByteString.Lazy (ByteString)+import Data.Text.Lazy (Text)+import qualified Data.Text.Lazy as Text+import qualified Data.Text.Lazy.Builder as B+import qualified Data.Text.Lazy.Encoding as TE  import Data.Profunctor.Indexed @@ -34,6 +35,9 @@ import Optics.Internal.IxTraversal import Optics.Internal.Optic +-- $setup+-- >>> import Data.ByteString.Lazy as LBS+ -- | This isomorphism can be used to 'pack' (or 'unpack') lazy 'Text.Text'. -- -- >>> "hello" ^. packed -- :: Text@@ -87,8 +91,8 @@ -- 'fromLazyText' x ≡ x 'Optics.Operators.^.' 'builder' -- 'toLazyText' x ≡ x 'Optics.Operators.^.' 're' 'builder' -- @-builder :: Iso' Text Builder-builder = iso fromLazyText toLazyText+builder :: Iso' Text B.Builder+builder = iso B.fromLazyText B.toLazyText {-# INLINE builder #-}  -- | Traverse the individual characters in a 'Text.Text'.@@ -117,10 +121,10 @@ -- Note: This function does not decode lazily, as it must consume the entire -- input before deciding whether or not it fails. ----- >>> ByteString.unpack (utf8 # Text.pack "☃")+-- >>> LBS.unpack (utf8 # Text.pack "☃") -- [226,152,131] utf8 :: Prism' ByteString Text-utf8 = prism' encodeUtf8 (preview _Right . decodeUtf8')+utf8 = prism' TE.encodeUtf8 (preview _Right . TE.decodeUtf8') {-# INLINE utf8 #-}  pattern Text :: String -> Text
src/Data/Text/Optics.hs view
@@ -19,9 +19,9 @@   , pattern Text   ) where -import Data.Text as Strict-import Data.Text.Lazy as Lazy-import Data.Text.Lazy.Builder+import qualified Data.Text as Strict+import qualified Data.Text.Lazy as Lazy+import qualified Data.Text.Lazy.Builder as B  import Optics.Core import qualified Data.Text.Lazy.Optics as Lazy@@ -44,7 +44,7 @@   -- @   -- 'fromText' x ≡ x 'Optics.Operators.^.' 'builder'   -- @-  builder :: Iso' t Builder+  builder :: Iso' t B.Builder    -- | Traverse the individual characters in strict or lazy 'Text'.   --
src/Data/Text/Strict/Optics.hs view
@@ -22,10 +22,11 @@   ) where  import Data.ByteString (ByteString)-import Data.Text as Strict-import Data.Text.Encoding+import Data.Text (Text)+import qualified Data.Text as Strict+import qualified Data.Text.Encoding as TE import Data.Text.Lazy (toStrict)-import Data.Text.Lazy.Builder+import qualified Data.Text.Lazy.Builder as B  import Data.Profunctor.Indexed @@ -48,7 +49,7 @@ -- 'packed' ≡ 'iso' 'pack' 'unpack' -- @ packed :: Iso' String Text-packed = iso pack unpack+packed = iso Strict.pack Strict.unpack {-# INLINE packed #-}  -- | This isomorphism can be used to 'unpack' (or 'pack') strict 'Strict.Text'.@@ -87,8 +88,8 @@ -- 'fromText' x ≡ x 'Optics.Operators.^.' 'builder' -- 'toStrict' ('toLazyText' x) ≡ x 'Optics.Operators.^.' 're' 'builder' -- @-builder :: Iso' Text Builder-builder = iso fromText (toStrict . toLazyText)+builder :: Iso' Text B.Builder+builder = iso B.fromText (toStrict . B.toLazyText) {-# INLINE builder #-}  -- | Traverse the individual characters in strict 'Strict.Text'.@@ -114,7 +115,7 @@ -- >>> utf8 # Strict.pack "☃" -- "\226\152\131" utf8 :: Prism' ByteString Text-utf8 = prism' encodeUtf8 (preview _Right . decodeUtf8')+utf8 = prism' TE.encodeUtf8 (preview _Right . TE.decodeUtf8') {-# INLINE utf8 #-}  pattern Text :: String -> Text@@ -126,7 +127,7 @@  -- | Internal implementation of 'unpacked'. unpacked__ :: Profunctor p => Optic__ p i i Text Text String String-unpacked__ = dimap unpack pack+unpacked__ = dimap Strict.unpack Strict.pack {-# INLINE unpacked__ #-}  -- | Internal implementation of 'text'.
src/Data/Vector/Generic/Optics.hs view
@@ -18,9 +18,9 @@   ) where  import Data.Vector.Fusion.Bundle (Bundle)-import Data.Vector.Generic as V hiding (zip, filter, indexed)+import Data.Vector.Generic (Vector)+import qualified Data.Vector.Generic as V import Data.Vector.Generic.New (New)-import Prelude hiding ((++), length, null, head, tail, init, last, map, reverse)  import Data.Profunctor.Indexed @@ -30,6 +30,9 @@ import Optics.Internal.IxFold import Optics.Internal.Optic +-- $setup+-- >>> import qualified Data.Vector as Vector+ -- | @sliced i n@ provides a 'Lens' that edits the @n@ elements starting at -- index @i@ from a 'Lens'. --@@ -50,7 +53,7 @@   -> Int -- ^ @n@ length   -> Lens' (v a) (v a) sliced i n = lensVL $ \f v ->-  (\v0 -> v // zip [i..i+n-1] (V.toList v0)) <$> f (slice i n v)+  (\v0 -> v V.// zip [i..i+n-1] (V.toList v0)) <$> f (V.slice i n v) {-# INLINE sliced #-}  -- | Similar to 'toListOf', but returning a 'Vector'.@@ -62,7 +65,7 @@   => Optic' k is s a   -> s   -> v a-toVectorOf l s = fromList (toListOf l s)+toVectorOf l s = V.fromList (toListOf l s) {-# INLINE toVectorOf #-}  -- | Convert a list to a 'Vector' (or back.)@@ -75,32 +78,32 @@ vector   :: (Vector v a, Vector v b)   => Iso [a] [b] (v a) (v b)-vector = iso fromList V.toList+vector = iso V.fromList V.toList {-# INLINE vector #-}  -- | Convert a 'Vector' to a finite 'Bundle' (or back.) asStream   :: (Vector v a, Vector v b)   => Iso (v a) (v b) (Bundle v a) (Bundle v b)-asStream = iso stream unstream+asStream = iso V.stream V.unstream {-# INLINE asStream #-}  -- | Convert a 'Vector' to a finite 'Bundle' from right to left (or back.) asStreamR   :: (Vector v a, Vector v b)   => Iso (v a) (v b) (Bundle v a) (Bundle v b)-asStreamR = iso streamR unstreamR+asStreamR = iso V.streamR V.unstreamR {-# INLINE asStreamR #-}  -- | Convert a 'Vector' back and forth to an initializer that when run produces -- a copy of the 'Vector'. cloned :: Vector v a => Iso' (v a) (New v a)-cloned = iso clone new+cloned = iso V.clone V.new {-# INLINE cloned #-}  -- | Convert a 'Vector' to a version that doesn't retain any extra memory. forced :: (Vector v a, Vector v b) => Iso (v a) (v b) (v a) (v b)-forced = iso force force+forced = iso V.force V.force {-# INLINE forced #-}  -- | This 'Traversal' will ignore any duplicates in the supplied list of@@ -110,7 +113,7 @@ -- [4,8,6,12,20,22] ordinals :: forall v a. Vector v a => [Int] -> IxTraversal' Int (v a) a ordinals is = itraversalVL $ \f v ->-  (v //) <$> traverse (\i -> (,) i <$> f i (v ! i)) (ordinalNub (length v) is)+  (v V.//) <$> traverse (\i -> (,) i <$> f i (v V.! i)) (ordinalNub (V.length v) is) {-# INLINE ordinals #-}  -- | Like 'ix' but polymorphic in the vector type.@@ -132,7 +135,7 @@ converted   :: (Vector v a, Vector w a, Vector v b, Vector w b)   => Iso (v a) (v b) (w a) (w b)-converted = iso convert convert+converted = iso V.convert V.convert {-# INLINE converted #-}  ----------------------------------------@@ -189,6 +192,3 @@     :: (V.Vector v a, V.Vector v b) => IxFunArrow (Int -> j) (v a) (v b)  #-}---- $setup--- >>> import qualified Data.Vector as Vector
src/Data/Vector/Optics.hs view
@@ -10,11 +10,12 @@   , ordinals   ) where -import Data.Vector as Vector hiding (zip, filter, indexed)-import Prelude hiding ((++), length, null, head, tail, init, last, map, reverse)-+import Data.Vector (Vector) import Optics.Core import qualified Data.Vector.Generic.Optics as G++-- $setup+-- >>> import Data.Vector as Vector  -- | @sliced i n@ provides a 'Lens' that edits the @n@ elements starting at -- index @i@ from a 'Lens'.
src/Optics/At.hs view
@@ -43,19 +43,21 @@   , Contains(..)   ) where -import Data.ByteString as StrictB-import Data.ByteString.Lazy as LazyB-import Data.HashMap.Lazy as HashMap-import Data.HashSet as HashSet-import Data.Hashable-import Data.Int-import Data.Text as StrictT-import Data.Text.Lazy as LazyT-import Data.Vector as Vector hiding (indexed)-import Data.Vector.Primitive as Prim-import Data.Vector.Storable as Storable-import Data.Vector.Unboxed as Unboxed hiding (indexed)-import Data.Word+import qualified Data.ByteString as StrictB+import qualified Data.ByteString.Lazy as LazyB+import Data.HashMap.Lazy (HashMap)+import qualified Data.HashMap.Lazy as HashMap+import Data.HashSet (HashSet)+import qualified Data.HashSet as HashSet+import Data.Hashable (Hashable)+import Data.Int (Int64)+import qualified Data.Text as StrictT+import qualified Data.Text.Lazy as LazyT+import qualified Data.Vector as Vector hiding (indexed)+import qualified Data.Vector.Primitive as Prim+import qualified Data.Vector.Storable as Storable+import qualified Data.Vector.Unboxed as Unboxed hiding (indexed)+import Data.Word (Word8)  import Optics.Core @@ -100,7 +102,7 @@   {-# INLINE ix #-}  type instance IxValue (Prim.Vector a) = a-instance Prim a => Ixed (Prim.Vector a) where+instance Prim.Prim a => Ixed (Prim.Vector a) where   ix i = atraversalVL $ \point f v ->     if 0 <= i && i < Prim.length v     then f (v Prim.! i) <&> \a -> v Prim.// [(i, a)]@@ -108,7 +110,7 @@   {-# INLINE ix #-}  type instance IxValue (Storable.Vector a) = a-instance Storable a => Ixed (Storable.Vector a) where+instance Storable.Storable a => Ixed (Storable.Vector a) where   ix i = atraversalVL $ \point f v ->     if 0 <= i && i < Storable.length v     then f (v Storable.! i) <&> \a -> v Storable.// [(i, a)]@@ -116,7 +118,7 @@   {-# INLINE ix #-}  type instance IxValue (Unboxed.Vector a) = a-instance Unbox a => Ixed (Unboxed.Vector a) where+instance Unboxed.Unbox a => Ixed (Unboxed.Vector a) where   ix i = atraversalVL $ \point f v ->     if 0 <= i && i < Unboxed.length v     then f (v Unboxed.! i) <&> \a -> v Unboxed.// [(i, a)]
src/Optics/Cons.hs view
@@ -29,7 +29,7 @@ import Data.Vector.Primitive (Prim) import Data.Vector.Storable (Storable) import Data.Vector.Unboxed (Unbox)-import Data.Word+import Data.Word (Word8) import qualified Data.ByteString as StrictB import qualified Data.ByteString.Lazy as LazyB import qualified Data.Text as StrictT
src/Optics/Each.hs view
@@ -13,18 +13,19 @@     Each(..)   ) where -import Data.ByteString as SB-import Data.ByteString.Lazy as LB-import Data.HashMap.Lazy as HashMap-import Data.Int-import Data.Text as ST-import Data.Text.Lazy as LT+import qualified Data.ByteString as SB+import qualified Data.ByteString.Lazy as LB+import Data.HashMap.Lazy (HashMap)+import qualified Data.HashMap.Lazy as HashMap+import Data.Int (Int64)+import qualified Data.Text as ST+import qualified Data.Text.Lazy as LT import Data.Text.Optics (text) import Data.Vector.Generic.Optics (vectorTraverse) import Data.Vector.Primitive (Prim) import Data.Vector.Storable (Storable) import Data.Vector.Unboxed (Unbox)-import Data.Word+import Data.Word (Word8) import qualified Data.Vector as V import qualified Data.Vector.Primitive as VP import qualified Data.Vector.Storable as VS
src/Optics/Empty.hs view
@@ -18,15 +18,17 @@   , pattern Empty   ) where -import Data.ByteString as StrictB-import Data.ByteString.Lazy as LazyB-import Data.HashMap.Lazy as HashMap-import Data.HashSet as HashSet-import Data.Text as StrictT-import Data.Text.Lazy as LazyT-import Data.Vector as Vector-import Data.Vector.Storable as Storable-import Data.Vector.Unboxed as Unboxed+import qualified Data.ByteString as StrictB+import qualified Data.ByteString.Lazy as LazyB+import Data.HashMap.Lazy (HashMap)+import qualified Data.HashMap.Lazy as HashMap+import Data.HashSet (HashSet)+import qualified Data.HashSet as HashSet+import qualified Data.Text as StrictT+import qualified Data.Text.Lazy as LazyT+import qualified Data.Vector as Vector+import qualified Data.Vector.Storable as Storable+import qualified Data.Vector.Unboxed as Unboxed  import Optics.Core @@ -44,11 +46,11 @@   _Empty = nearly Vector.empty Vector.null   {-# INLINE _Empty #-} -instance Unbox a => AsEmpty (Unboxed.Vector a) where+instance Unboxed.Unbox a => AsEmpty (Unboxed.Vector a) where   _Empty = nearly Unboxed.empty Unboxed.null   {-# INLINE _Empty #-} -instance Storable a => AsEmpty (Storable.Vector a) where+instance Storable.Storable a => AsEmpty (Storable.Vector a) where   _Empty = nearly Storable.empty Storable.null   {-# INLINE _Empty #-} 
src/Optics/Extra/Internal/Zoom.hs view
@@ -139,8 +139,7 @@  instance Monoid a => Monoid (May a) where   mempty = May $ Just mempty-  May (Just a) `mappend` May (Just b) = May $ Just (a `mappend` b)-  _            `mappend` _            = May Nothing+  mappend = (<>)   {-# INLINE mempty #-}   {-# INLINE mappend #-} @@ -163,9 +162,7 @@  instance Monoid a => Monoid (Err e a) where   mempty = Err $ Right mempty-  Err (Right a) `mappend` Err (Right b) = Err $ Right (a `mappend` b)-  Err (Left e)  `mappend` _             = Err $ Left e-  _             `mappend` Err (Left e)  = Err $ Left e+  mappend = (<>)   {-# INLINE mempty #-}   {-# INLINE mappend #-} @@ -186,7 +183,7 @@  instance (Monad m, Monoid r) => Monoid (Effect m r) where   mempty = Effect $ pure mempty-  Effect ma `mappend` Effect mb = Effect $ mappend <$> ma <*> mb+  mappend = (<>)   {-# INLINE mempty #-}   {-# INLINE mappend #-} @@ -206,10 +203,7 @@  instance (Monoid c, Monoid w, Monad m) => Monoid (EffectRWS w s m c) where   mempty  = EffectRWS $ \s -> pure (mempty, s, mempty)-  EffectRWS ma `mappend` EffectRWS mb = EffectRWS $ \s -> do-    (c, s', w)    <- ma s-    (c', s'', w') <- mb s'-    pure (c `mappend` c', s'', w `mappend` w')+  mappend = (<>)   {-# INLINE mempty #-}   {-# INLINE mappend #-} 
src/Optics/Indexed.hs view
@@ -51,9 +51,6 @@   , ifor   ) where -import qualified Data.HashMap.Lazy as HM-import qualified Data.Vector as V- import Optics.Indexed.Core import Optics.IxAffineFold import Optics.IxAffineTraversal@@ -63,36 +60,4 @@ import Optics.IxSetter import Optics.IxTraversal -------------------------------------------- Extra *WithIndex instances---- HashMap--instance FunctorWithIndex k (HM.HashMap k) where-  imap = HM.mapWithKey-  {-# INLINE imap #-}-instance FoldableWithIndex k (HM.HashMap k) where-  ifoldr  = HM.foldrWithKey-  ifoldl' = HM.foldlWithKey' . flip-  {-# INLINE ifoldr #-}-  {-# INLINE ifoldl' #-}-instance TraversableWithIndex k (HM.HashMap k) where-  itraverse = HM.traverseWithKey-  {-# INLINE itraverse #-}---- Vector--instance FunctorWithIndex Int V.Vector where-  imap = V.imap-  {-# INLINE imap #-}-instance FoldableWithIndex Int V.Vector where-  ifoldMap f = ifoldr (\i -> mappend . f i) mempty-  ifoldr     = V.ifoldr-  ifoldl'    = V.ifoldl' . flip-  {-# INLINE ifoldMap #-}-  {-# INLINE ifoldr #-}-  {-# INLINE ifoldl' #-}-instance TraversableWithIndex Int V.Vector where-  itraverse f v =-    let !n = V.length v in V.fromListN n <$> itraverse f (V.toList v)-  {-# INLINE itraverse #-}+import Data.Functor.WithIndex.Instances ()
src/Optics/Passthrough.hs view
@@ -16,11 +16,11 @@     -> (ViewResult k r, t)  instance PermeableOptic An_Iso r where-  passthrough = toLensVL+  passthrough o = toLensVL o   {-# INLINE passthrough #-}  instance PermeableOptic A_Lens r where-  passthrough = toLensVL+  passthrough o = toLensVL o   {-# INLINE passthrough #-}  instance PermeableOptic A_Prism r where
src/Optics/Zoom.hs view
@@ -9,24 +9,31 @@   , MagnifyMany(..)   ) where -import Control.Monad.Reader as Reader-import Control.Monad.State-import Control.Monad.Trans.Error-import Control.Monad.Trans.Except-import Control.Monad.Trans.Identity-import Control.Monad.Trans.List-import Control.Monad.Trans.Maybe-import Control.Monad.Trans.RWS.Lazy as L-import Control.Monad.Trans.RWS.Strict as S-import Control.Monad.Trans.State.Lazy as L-import Control.Monad.Trans.State.Strict as S-import Control.Monad.Trans.Writer.Lazy as L-import Control.Monad.Trans.Writer.Strict as S+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+import qualified Control.Monad.Trans.State.Lazy as L+import qualified Control.Monad.Trans.State.Strict as S+import qualified Control.Monad.Trans.Writer.Lazy as L+import qualified Control.Monad.Trans.Writer.Strict as S  import Optics.Core import Optics.Internal.Utils import Optics.Extra.Internal.Zoom +-- $setup+-- >>> import Data.Monoid+-- >>> import Control.Monad.Reader (runReader, ask)+-- >>> import Optics.State+-- >>> import Optics.State.Operators+-- >>> import Optics.View+ -- Chosen so that they have lower fixity than ('%='). infixr 2 `zoom`, `zoomMaybe`, `zoomMany` infixr 2 `magnify`, `magnifyMaybe`, `magnifyMany`@@ -215,10 +222,10 @@ -- >>> (1,2) & magnify _2 (+1) -- 3 ----- >>> flip runReader (1,2) $ magnify _1 Reader.ask+-- >>> flip runReader (1,2) $ magnify _1 ask -- 1 ----- >>> flip runReader (1,2,[10..20]) $ magnifyMaybe (_3 % _tail) Reader.ask+-- >>> flip runReader (1,2,[10..20]) $ magnifyMaybe (_3 % _tail) ask -- Just [11,12,13,14,15,16,17,18,19,20] -- class@@ -404,9 +411,3 @@ 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 #-}---- $setup--- >>> import Data.Monoid--- >>> import Optics.State--- >>> import Optics.State.Operators--- >>> import Optics.View