content: -- |
  -- Module: Optics.ReversedLens
  -- Description: A backwards 'Optics.Lens.Lens'.
  --
  -- A 'ReversedLens' is a backwards 'Optics.Lens.Lens', i.e. a @'ReversedLens' s t
  -- a b@ is equivalent to a @'Optics.Lens.Lens' b a t s@.  These are typically
  -- produced by calling 'Optics.Re.re' on a 'Optics.Lens.Lens'.  They are
  -- distinguished from a 'Optics.Review.Review' so that @'Optics.Re.re'
  -- . 'Optics.Re.re'@ on a 'Optics.Lens.Lens' returns a 'Optics.Lens.Lens'.
  --
  module Optics.ReversedLens
    (
    -- * Formation
      ReversedLens
    , ReversedLens'
  
    -- * Introduction
    -- |
    --
    -- There is no canonical introduction form for 'ReversedLens', but you can use
    -- 'Optics.Re.re' to construct one from a 'Optics.Lens.Lens':
    --
    -- @
    -- (\\ f g -> 'Optics.Re.re' ('Optics.Lens.lens' f g)) :: (b -> t) -> (b -> s -> a) -> 'ReversedLens' s t a b
    -- @
  
    -- * Elimination
    -- |
    --
    -- A 'ReversedLens' is a 'Optics.Review.Review', so you can specialise types to obtain:
    --
    -- @
    -- 'Optics.Review.review' :: 'ReversedLens'' s a -> a -> s
    -- @
    --
    -- There is no corresponding optic kind for a backwards
    -- 'Optics.Setter.Setter', but a reversed 'Optics.Setter.set' is definable
    -- using 'Optics.Re.re':
    --
    -- @
    -- 'Optics.Setter.set' . 'Optics.Re.re' :: 'ReversedLens' s t a b -> s -> b -> a
    -- @
  
    -- * Computation
    -- |
    --
    -- @
    -- 'Optics.Review.review'   $ 'Optics.Re.re' ('Optics.Lens.lens' f g) ≡ f
    -- 'Optics.Setter.set' . 'Optics.Re.re' $ 'Optics.Re.re' ('Optics.Lens.lens' f g) ≡ g
    -- @
  
    -- * Subtyping
    , A_ReversedLens
    -- | <<diagrams/ReversedLens.png ReversedLens in the optics hierarchy>>
    ) where
  
  import Optics.Internal.Optic
  
  -- | Type synonym for a type-modifying reversed lens.
  type ReversedLens s t a b = Optic A_ReversedLens NoIx s t a b
  
  -- | Type synonym for a type-preserving reversed lens.
  type ReversedLens' t b = Optic' A_ReversedLens NoIx t b
  