lens-5.3.3: Lenses, Folds and Traversals

Copyright | (C) 2012-2016 Edward Kmett
License | BSD-style (see the file LICENSE)
Maintainer | Edward Kmett <ekmett@gmail.com>
Stability | experimental
Portability | non-portable
Safe Haskell | Trustworthy
Language | Haskell2010

Control.Lens.Internal.Zoom

Contents

- Zoom
- Magnify

Description

Synopsis

- newtype Focusing (m :: Type -> Type) s a = Focusing {
  - unfocusing :: m (s, a)
  }
- newtype FocusingWith w (m :: Type -> Type) s a = FocusingWith {
  - unfocusingWith :: m (s, a, w)
  }
- newtype FocusingPlus w (k :: Type -> Type -> Type) s a = FocusingPlus {
  - unfocusingPlus :: k (s, w) a
  }
- newtype FocusingOn (f :: Type -> Type) (k :: Type -> Type -> Type) s a = FocusingOn {
  - unfocusingOn :: k (f s) a
  }
- newtype FocusingMay (k :: Type -> Type -> Type) s a = FocusingMay {
  - unfocusingMay :: k (May s) a
  }
- newtype May a = May {
  - getMay :: Maybe a
  }
- newtype FocusingErr e (k :: Type -> Type -> Type) s a = FocusingErr {
  - unfocusingErr :: k (Err e s) a
  }
- newtype Err e a = Err {
  - getErr :: Either e a
  }
- newtype FocusingFree (f :: Type -> Type) (m :: Type -> Type) (k :: Type -> Type -> Type) s a = FocusingFree {
  - unfocusingFree :: k (Freed f m s) a
  }
- newtype Freed (f :: Type -> Type) (m :: Type -> Type) a = Freed {
  - getFreed :: FreeF f a (FreeT f m a)
  }
- newtype Effect (m :: Type -> Type) r a = Effect {
  - getEffect :: m r
  }
- newtype EffectRWS w st (m :: Type -> Type) s a = EffectRWS {
  - getEffectRWS :: st -> m (s, st, w)
  }

# Zoom

newtype Focusing (m :: Type -> Type) s a #

Used by `Zoom` to `zoom` into `StateT`.

Constructors

Focusing |
Fields unfocusing :: m (s, a)

#### Instances

Instances details

(Monad m, Monoid s) => Applicative (Focusing m s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods pure :: a -> Focusing m s a # (<*>) :: Focusing m s (a -> b) -> Focusing m s a -> Focusing m s b # liftA2 :: (a -> b -> c) -> Focusing m s a -> Focusing m s b -> Focusing m s c # (*>) :: Focusing m s a -> Focusing m s b -> Focusing m s b # (<*) :: Focusing m s a -> Focusing m s b -> Focusing m s a #
Monad m => Functor (Focusing m s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods fmap :: (a -> b) -> Focusing m s a -> Focusing m s b # (<$) :: a -> Focusing m s b -> Focusing m s a #
(Monad m, Semigroup s) => Apply (Focusing m s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods (<.>) :: Focusing m s (a -> b) -> Focusing m s a -> Focusing m s b # (.>) :: Focusing m s a -> Focusing m s b -> Focusing m s b # (<.) :: Focusing m s a -> Focusing m s b -> Focusing m s a # liftF2 :: (a -> b -> c) -> Focusing m s a -> Focusing m s b -> Focusing m s c #

newtype FocusingWith w (m :: Type -> Type) s a #

Used by `Zoom` to `zoom` into `RWST`.

Constructors

FocusingWith |
Fields unfocusingWith :: m (s, a, w)

#### Instances

Instances details

(Monad m, Monoid s, Monoid w) => Applicative (FocusingWith w m s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods pure :: a -> FocusingWith w m s a # (<*>) :: FocusingWith w m s (a -> b) -> FocusingWith w m s a -> FocusingWith w m s b # liftA2 :: (a -> b -> c) -> FocusingWith w m s a -> FocusingWith w m s b -> FocusingWith w m s c # (*>) :: FocusingWith w m s a -> FocusingWith w m s b -> FocusingWith w m s b # (<*) :: FocusingWith w m s a -> FocusingWith w m s b -> FocusingWith w m s a #
Monad m => Functor (FocusingWith w m s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods fmap :: (a -> b) -> FocusingWith w m s a -> FocusingWith w m s b # (<$) :: a -> FocusingWith w m s b -> FocusingWith w m s a #
(Monad m, Semigroup s, Semigroup w) => Apply (FocusingWith w m s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods (<.>) :: FocusingWith w m s (a -> b) -> FocusingWith w m s a -> FocusingWith w m s b # (.>) :: FocusingWith w m s a -> FocusingWith w m s b -> FocusingWith w m s b # (<.) :: FocusingWith w m s a -> FocusingWith w m s b -> FocusingWith w m s a # liftF2 :: (a -> b -> c) -> FocusingWith w m s a -> FocusingWith w m s b -> FocusingWith w m s c #

newtype FocusingPlus w (k :: Type -> Type -> Type) s a #

Used by `Zoom` to `zoom` into `WriterT`.

Constructors

FocusingPlus |
Fields unfocusingPlus :: k (s, w) a

#### Instances

Instances details

Applicative (k (s, w)) => Applicative (FocusingPlus w k s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods pure :: a -> FocusingPlus w k s a # (<*>) :: FocusingPlus w k s (a -> b) -> FocusingPlus w k s a -> FocusingPlus w k s b # liftA2 :: (a -> b -> c) -> FocusingPlus w k s a -> FocusingPlus w k s b -> FocusingPlus w k s c # (*>) :: FocusingPlus w k s a -> FocusingPlus w k s b -> FocusingPlus w k s b # (<*) :: FocusingPlus w k s a -> FocusingPlus w k s b -> FocusingPlus w k s a #
Functor (k (s, w)) => Functor (FocusingPlus w k s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods fmap :: (a -> b) -> FocusingPlus w k s a -> FocusingPlus w k s b # (<$) :: a -> FocusingPlus w k s b -> FocusingPlus w k s a #
Apply (k (s, w)) => Apply (FocusingPlus w k s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods (<.>) :: FocusingPlus w k s (a -> b) -> FocusingPlus w k s a -> FocusingPlus w k s b # (.>) :: FocusingPlus w k s a -> FocusingPlus w k s b -> FocusingPlus w k s b # (<.) :: FocusingPlus w k s a -> FocusingPlus w k s b -> FocusingPlus w k s a # liftF2 :: (a -> b -> c) -> FocusingPlus w k s a -> FocusingPlus w k s b -> FocusingPlus w k s c #

newtype FocusingOn (f :: Type -> Type) (k :: Type -> Type -> Type) s a #

Used by `Zoom` to `zoom` into `MaybeT` or `ListT`.

Constructors

FocusingOn |
Fields unfocusingOn :: k (f s) a

#### Instances

Instances details

Applicative (k (f s)) => Applicative (FocusingOn f k s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods pure :: a -> FocusingOn f k s a # (<*>) :: FocusingOn f k s (a -> b) -> FocusingOn f k s a -> FocusingOn f k s b # liftA2 :: (a -> b -> c) -> FocusingOn f k s a -> FocusingOn f k s b -> FocusingOn f k s c # (*>) :: FocusingOn f k s a -> FocusingOn f k s b -> FocusingOn f k s b # (<*) :: FocusingOn f k s a -> FocusingOn f k s b -> FocusingOn f k s a #
Functor (k (f s)) => Functor (FocusingOn f k s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods fmap :: (a -> b) -> FocusingOn f k s a -> FocusingOn f k s b # (<$) :: a -> FocusingOn f k s b -> FocusingOn f k s a #
Apply (k (f s)) => Apply (FocusingOn f k s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods (<.>) :: FocusingOn f k s (a -> b) -> FocusingOn f k s a -> FocusingOn f k s b # (.>) :: FocusingOn f k s a -> FocusingOn f k s b -> FocusingOn f k s b # (<.) :: FocusingOn f k s a -> FocusingOn f k s b -> FocusingOn f k s a # liftF2 :: (a -> b -> c) -> FocusingOn f k s a -> FocusingOn f k s b -> FocusingOn f k s c #

newtype FocusingMay (k :: Type -> Type -> Type) s a #

Used by `Zoom` to `zoom` into `ErrorT`.

Constructors

FocusingMay |
Fields unfocusingMay :: k (May s) a

#### Instances

Instances details

Applicative (k (May s)) => Applicative (FocusingMay k s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods pure :: a -> FocusingMay k s a # (<*>) :: FocusingMay k s (a -> b) -> FocusingMay k s a -> FocusingMay k s b # liftA2 :: (a -> b -> c) -> FocusingMay k s a -> FocusingMay k s b -> FocusingMay k s c # (*>) :: FocusingMay k s a -> FocusingMay k s b -> FocusingMay k s b # (<*) :: FocusingMay k s a -> FocusingMay k s b -> FocusingMay k s a #
Functor (k (May s)) => Functor (FocusingMay k s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods fmap :: (a -> b) -> FocusingMay k s a -> FocusingMay k s b # (<$) :: a -> FocusingMay k s b -> FocusingMay k s a #
Apply (k (May s)) => Apply (FocusingMay k s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods (<.>) :: FocusingMay k s (a -> b) -> FocusingMay k s a -> FocusingMay k s b # (.>) :: FocusingMay k s a -> FocusingMay k s b -> FocusingMay k s b # (<.) :: FocusingMay k s a -> FocusingMay k s b -> FocusingMay k s a # liftF2 :: (a -> b -> c) -> FocusingMay k s a -> FocusingMay k s b -> FocusingMay k s c #

newtype May a #

Make a `Monoid` out of `Maybe` for error handling.

Constructors

May |
Fields getMay :: Maybe a

#### Instances

Instances details

Monoid a => Monoid (May a) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods mempty :: May a # mappend :: May a -> May a -> May a # mconcat :: [May a] -> May a #
Semigroup a => Semigroup (May a) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods (<>) :: May a -> May a -> May a # sconcat :: NonEmpty (May a) -> May a # stimes :: Integral b => b -> May a -> May a #

newtype FocusingErr e (k :: Type -> Type -> Type) s a #

Used by `Zoom` to `zoom` into `ErrorT`.

Constructors

FocusingErr |
Fields unfocusingErr :: k (Err e s) a

#### Instances

Instances details

Applicative (k (Err e s)) => Applicative (FocusingErr e k s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods pure :: a -> FocusingErr e k s a # (<*>) :: FocusingErr e k s (a -> b) -> FocusingErr e k s a -> FocusingErr e k s b # liftA2 :: (a -> b -> c) -> FocusingErr e k s a -> FocusingErr e k s b -> FocusingErr e k s c # (*>) :: FocusingErr e k s a -> FocusingErr e k s b -> FocusingErr e k s b # (<*) :: FocusingErr e k s a -> FocusingErr e k s b -> FocusingErr e k s a #
Functor (k (Err e s)) => Functor (FocusingErr e k s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods fmap :: (a -> b) -> FocusingErr e k s a -> FocusingErr e k s b # (<$) :: a -> FocusingErr e k s b -> FocusingErr e k s a #
Apply (k (Err e s)) => Apply (FocusingErr e k s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods (<.>) :: FocusingErr e k s (a -> b) -> FocusingErr e k s a -> FocusingErr e k s b # (.>) :: FocusingErr e k s a -> FocusingErr e k s b -> FocusingErr e k s b # (<.) :: FocusingErr e k s a -> FocusingErr e k s b -> FocusingErr e k s a # liftF2 :: (a -> b -> c) -> FocusingErr e k s a -> FocusingErr e k s b -> FocusingErr e k s c #

newtype Err e a #

Make a `Monoid` out of `Either` for error handling.

Constructors

Err |
Fields getErr :: Either e a

#### Instances

Instances details

Monoid a => Monoid (Err e a) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods mempty :: Err e a # mappend :: Err e a -> Err e a -> Err e a # mconcat :: [Err e a] -> Err e a #
Semigroup a => Semigroup (Err e a) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods (<>) :: Err e a -> Err e a -> Err e a # sconcat :: NonEmpty (Err e a) -> Err e a # stimes :: Integral b => b -> Err e a -> Err e a #

newtype FocusingFree (f :: Type -> Type) (m :: Type -> Type) (k :: Type -> Type -> Type) s a #

Used by `Zoom` to `zoom` into `FreeT`

Constructors

FocusingFree |
Fields unfocusingFree :: k (Freed f m s) a

#### Instances

Instances details

Applicative (k (Freed f m s)) => Applicative (FocusingFree f m k s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods pure :: a -> FocusingFree f m k s a # (<*>) :: FocusingFree f m k s (a -> b) -> FocusingFree f m k s a -> FocusingFree f m k s b # liftA2 :: (a -> b -> c) -> FocusingFree f m k s a -> FocusingFree f m k s b -> FocusingFree f m k s c # (*>) :: FocusingFree f m k s a -> FocusingFree f m k s b -> FocusingFree f m k s b # (<*) :: FocusingFree f m k s a -> FocusingFree f m k s b -> FocusingFree f m k s a #
Functor (k (Freed f m s)) => Functor (FocusingFree f m k s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods fmap :: (a -> b) -> FocusingFree f m k s a -> FocusingFree f m k s b # (<$) :: a -> FocusingFree f m k s b -> FocusingFree f m k s a #
Apply (k (Freed f m s)) => Apply (FocusingFree f m k s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods (<.>) :: FocusingFree f m k s (a -> b) -> FocusingFree f m k s a -> FocusingFree f m k s b # (.>) :: FocusingFree f m k s a -> FocusingFree f m k s b -> FocusingFree f m k s b # (<.) :: FocusingFree f m k s a -> FocusingFree f m k s b -> FocusingFree f m k s a # liftF2 :: (a -> b -> c) -> FocusingFree f m k s a -> FocusingFree f m k s b -> FocusingFree f m k s c #

newtype Freed (f :: Type -> Type) (m :: Type -> Type) a #

Make a `Monoid` out of `FreeF` for result collection.

Constructors

Freed |
Fields getFreed :: FreeF f a (FreeT f m a)

#### Instances

Instances details

(Applicative f, Monoid a, Monad m) => Monoid (Freed f m a) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods mempty :: Freed f m a # mappend :: Freed f m a -> Freed f m a -> Freed f m a # mconcat :: [Freed f m a] -> Freed f m a #
(Applicative f, Semigroup a, Monad m) => Semigroup (Freed f m a) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods (<>) :: Freed f m a -> Freed f m a -> Freed f m a # sconcat :: NonEmpty (Freed f m a) -> Freed f m a # stimes :: Integral b => b -> Freed f m a -> Freed f m a #

# Magnify

newtype Effect (m :: Type -> Type) r a #

Wrap a monadic effect with a phantom type argument.

Constructors

Effect |
Fields getEffect :: m r

#### Instances

Instances details

Contravariant (Effect m r) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods contramap :: (a' -> a) -> Effect m r a -> Effect m r a' # (>$) :: b -> Effect m r b -> Effect m r a #
(Monad m, Monoid r) => Applicative (Effect m r) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods pure :: a -> Effect m r a # (<*>) :: Effect m r (a -> b) -> Effect m r a -> Effect m r b # liftA2 :: (a -> b -> c) -> Effect m r a -> Effect m r b -> Effect m r c # (*>) :: Effect m r a -> Effect m r b -> Effect m r b # (<*) :: Effect m r a -> Effect m r b -> Effect m r a #
Functor (Effect m r) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods fmap :: (a -> b) -> Effect m r a -> Effect m r b # (<$) :: a -> Effect m r b -> Effect m r a #
(Apply m, Semigroup r) => Apply (Effect m r) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods (<.>) :: Effect m r (a -> b) -> Effect m r a -> Effect m r b # (.>) :: Effect m r a -> Effect m r b -> Effect m r b # (<.) :: Effect m r a -> Effect m r b -> Effect m r a # liftF2 :: (a -> b -> c) -> Effect m r a -> Effect m r b -> Effect m r c #
(Monad m, Monoid r) => Monoid (Effect m r a) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods mempty :: Effect m r a # mappend :: Effect m r a -> Effect m r a -> Effect m r a # mconcat :: [Effect m r a] -> Effect m r a #
(Monad m, Semigroup r) => Semigroup (Effect m r a) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods (<>) :: Effect m r a -> Effect m r a -> Effect m r a # sconcat :: NonEmpty (Effect m r a) -> Effect m r a # stimes :: Integral b => b -> Effect m r a -> Effect m r a #

newtype EffectRWS w st (m :: Type -> Type) s a #

Wrap a monadic effect with a phantom type argument. Used when magnifying `RWST`.

Constructors

EffectRWS |
Fields getEffectRWS :: st -> m (s, st, w)

#### Instances

Instances details

Contravariant (EffectRWS w st m s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods contramap :: (a' -> a) -> EffectRWS w st m s a -> EffectRWS w st m s a' # (>$) :: b -> EffectRWS w st m s b -> EffectRWS w st m s a #
(Monoid s, Monoid w, Monad m) => Applicative (EffectRWS w st m s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods pure :: a -> EffectRWS w st m s a # (<*>) :: EffectRWS w st m s (a -> b) -> EffectRWS w st m s a -> EffectRWS w st m s b # liftA2 :: (a -> b -> c) -> EffectRWS w st m s a -> EffectRWS w st m s b -> EffectRWS w st m s c # (*>) :: EffectRWS w st m s a -> EffectRWS w st m s b -> EffectRWS w st m s b # (<*) :: EffectRWS w st m s a -> EffectRWS w st m s b -> EffectRWS w st m s a #
Functor (EffectRWS w st m s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods fmap :: (a -> b) -> EffectRWS w st m s a -> EffectRWS w st m s b # (<$) :: a -> EffectRWS w st m s b -> EffectRWS w st m s a #
(Semigroup s, Semigroup w, Bind m) => Apply (EffectRWS w st m s) # |
Instance details Defined in Control.Lens.Internal.Zoom Methods (<.>) :: EffectRWS w st m s (a -> b) -> EffectRWS w st m s a -> EffectRWS w st m s b # (.>) :: EffectRWS w st m s a -> EffectRWS w st m s b -> EffectRWS w st m s b # (<.) :: EffectRWS w st m s a -> EffectRWS w st m s b -> EffectRWS w st m s a # liftF2 :: (a -> b -> c) -> EffectRWS w st m s a -> EffectRWS w st m s b -> EffectRWS w st m s c #