diff --git a/Control-Lens-At.html b/Control-Lens-At.html index 959983294..8f46b6abb 100644 --- a/Control-Lens-At.html +++ b/Control-Lens-At.html @@ -5,7 +5,7 @@
  • Ixed
  • At
  • Deprecated -
  • Description

     

    Synopsis

    Contains +

    Description

     

    Synopsis

    Contains

    class Functor f => Contains f m whereSource

    Methods

    contains :: Index m -> IndexedLensLike' (Index m) f m BoolSource

    This simple IndexedTraversal lets you view (and sometimes modify) whether or not a map (or set) contains a given key.

    >>> IntSet.fromList [1,2,3,4] ^. contains 3
    @@ -19,9 +19,9 @@
     

    containsAt :: (Gettable f, At m) => Index m -> IndexedLensLike' (Index m) f m BoolSource

    A definition of ix for types with an At instance. This is the default if you don't specify a definition for ix.

    containsLength :: forall i s. (Ord i, Num i) => (s -> i) -> i -> IndexedGetter i s BoolSource

    containsTest :: forall i s. (i -> s -> Bool) -> i -> IndexedGetter i s BoolSource

    containsLookup :: forall i s a. (i -> s -> Maybe a) -> i -> IndexedGetter i s BoolSource

    Ixed -

    type family Value m :: *Source

    class (Functor f, Contains (Accessor (Value m)) m) => Ixed f m whereSource

    This simple IndexedTraversal lets you traverse the value at a given +

    type family IxValue m :: *Source

    class (Functor f, Contains (Accessor (IxValue m)) m) => Ixed f m whereSource

    This simple IndexedTraversal lets you traverse the value at a given key in a Map or element at an ordinal position in a list or Seq. -

    Methods

    ix :: Index m -> IndexedLensLike' (Index m) f m (Value m)Source

    This simple IndexedTraversal lets you traverse the value at a given +

    Methods

    ix :: Index m -> IndexedLensLike' (Index m) f m (IxValue m)Source

    This simple IndexedTraversal lets you traverse the value at a given key in a Map or element at an ordinal position in a list or Seq.

    NB: Setting the value of this Traversal will only set the value in the Lens if it is already present. @@ -40,20 +40,20 @@ (Applicative f, Ix i) => Ixed f (Array i e)

      arr ! i ≡ arr ^. ix i
      arr // [(i,e)] ≡ ix i .~ e $ arr
    -
    (Applicative f, Eq k, Hashable k) => Ixed f (HashMap k a) (Applicative f, Ord k) => Ixed f (Map k a) (Applicative f, ~ * a b, ~ * b c) => Ixed f (a, b, c) (Applicative f, ~ * a b, ~ * b c, ~ * c d) => Ixed f (a, b, c, d) (Applicative f, ~ * a b, ~ * b c, ~ * c d, ~ * d e) => Ixed f (a, b, c, d, e) (Applicative f, ~ * a b, ~ * b c, ~ * c d, ~ * d e, ~ * e f') => Ixed f (a, b, c, d, e, f') (Applicative f, ~ * a b, ~ * b c, ~ * c d, ~ * d e, ~ * e f', ~ * f' g) => Ixed f (a, b, c, d, e, f', g) (Applicative f, ~ * a b, ~ * b c, ~ * c d, ~ * d e, ~ * e f', ~ * f' g, ~ * g h) => Ixed f (a, b, c, d, e, f', g, h) (Applicative f, ~ * a b, ~ * b c, ~ * c d, ~ * d e, ~ * e f', ~ * f' g, ~ * g h, ~ * h i) => Ixed f (a, b, c, d, e, f', g, h, i) 

    ixAt :: (Applicative f, At m) => Index m -> IndexedLensLike' (Index m) f m (Value m)Source

    A definition of ix for types with an At instance. This is the default +(Applicative f, Eq k, Hashable k) => Ixed f (HashMap k a) (Applicative f, Ord k) => Ixed f (Map k a) (Applicative f, ~ * a b, ~ * b c) => Ixed f (a, b, c) (Applicative f, ~ * a b, ~ * b c, ~ * c d) => Ixed f (a, b, c, d) (Applicative f, ~ * a b, ~ * b c, ~ * c d, ~ * d e) => Ixed f (a, b, c, d, e) (Applicative f, ~ * a b, ~ * b c, ~ * c d, ~ * d e, ~ * e f') => Ixed f (a, b, c, d, e, f') (Applicative f, ~ * a b, ~ * b c, ~ * c d, ~ * d e, ~ * e f', ~ * f' g) => Ixed f (a, b, c, d, e, f', g) (Applicative f, ~ * a b, ~ * b c, ~ * c d, ~ * d e, ~ * e f', ~ * f' g, ~ * g h) => Ixed f (a, b, c, d, e, f', g, h) (Applicative f, ~ * a b, ~ * b c, ~ * c d, ~ * d e, ~ * e f', ~ * f' g, ~ * g h, ~ * h i) => Ixed f (a, b, c, d, e, f', g, h, i) 

    ixAt :: (Applicative f, At m) => Index m -> IndexedLensLike' (Index m) f m (IxValue m)Source

    A definition of ix for types with an At instance. This is the default if you don't specify a definition for ix. -

    ixEach :: (Applicative f, Eq (Index m), Each f m m (Value m) (Value m)) => Index m -> IndexedLensLike' (Index m) f m (Value m)Source

    A definition of ix for types with an Each instance. +

    ixEach :: (Applicative f, Eq (Index m), Each f m m (IxValue m) (IxValue m)) => Index m -> IndexedLensLike' (Index m) f m (IxValue m)Source

    A definition of ix for types with an Each instance.

    At

    class At m whereSource

    At provides a Lens that can be used to read, write or delete the value associated with a key in a Map-like container on an ad hoc basis.

    An instance of At should satisfy: -

    ix k ≡ at k <. traverse

    Methods

    at :: Index m -> IndexedLens' (Index m) m (Maybe (Value m))Source

    >>> Map.fromList [(1,"world")] ^.at 1
    +

    ix k ≡ at k <. traverse

    Methods

    at :: Index m -> IndexedLens' (Index m) m (Maybe (IxValue m))Source

    >>> Map.fromList [(1,"world")] ^.at 1
     Just "world"
     
    >>> at 1 ?~ "hello" $ Map.empty
     fromList [(1,"hello")]
     

    Note: Map-like containers form a reasonable instance, but not Array-like ones, where you cannot satisfy the Lens laws.

    Instances

    At (IntMap a) 
    Ord k => At (Map k a) 
    (Eq k, Hashable k) => At (HashMap k a) 

    Deprecated -

    _at, resultAt :: Ixed f m => Index m -> IndexedLensLike' (Index m) f m (Value m)Source

    A deprecated alias for ix. +

    _at, resultAt :: Ixed f m => Index m -> IndexedLensLike' (Index m) f m (IxValue m)Source

    A deprecated alias for ix.

    \ No newline at end of file diff --git a/Control-Lens-Cons.html b/Control-Lens-Cons.html index d8412e593..e2d6f9b39 100644 --- a/Control-Lens-Cons.html +++ b/Control-Lens-Cons.html @@ -16,7 +16,7 @@ _Cons :: Prism' ByteString (Word8, ByteString)

    However, by including p and f in the class you can write instances that only permit uncons or which only permit cons, or where _head and _tail are lenses and not traversals. -

    Instances

    (Choice p, Applicative f) => Cons p f Text Text Char Char 
    (Choice p, Applicative f) => Cons p f Text Text Char Char 
    (Choice p, Applicative f) => Cons p f ByteString ByteString Word8 Word8 
    (Choice p, Applicative f) => Cons p f ByteString ByteString Word8 Word8 
    (Choice p, Applicative f, Unbox a, Unbox b) => Cons p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f, Storable a, Storable b) => Cons p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f, Prim a, Prim b) => Cons p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f) => Cons p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f) => Cons p f (Seq a) (Seq b) a b 
    (Choice p, Applicative f) => Cons p f [a] [b] a b 

    (<|) :: Cons Reviewed Identity s s a a => a -> s -> sSource

    cons an element onto a container. +

    Instances

    (Choice p, Applicative f) => Cons p f Text Text Char Char 
    (Choice p, Applicative f) => Cons p f Text Text Char Char 
    (Choice p, Applicative f) => Cons p f ByteString ByteString Word8 Word8 
    (Choice p, Applicative f) => Cons p f ByteString ByteString Word8 Word8 
    (Choice p, Applicative f, Unbox a, Unbox b) => Cons p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f, Storable a, Storable b) => Cons p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f, Prim a, Prim b) => Cons p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f) => Cons p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f) => Cons p f (Seq a) (Seq b) a b 
    (Choice p, Applicative f) => Cons p f [a] [b] a b 
    (Choice p, Applicative f) => Cons p f (Deque a) (Deque b) a b 

    (<|) :: Cons Reviewed Identity s s a a => a -> s -> sSource

    cons an element onto a container.

    This is an infix alias for cons.

    cons :: Cons Reviewed Identity s s a a => a -> s -> sSource

    cons an element onto a container.

    uncons :: Cons (->) (Accessor (First (a, s))) s s a a => s -> Maybe (a, s)Source

    Attempt to extract the left-most element from a container, and a version of the container without that element. @@ -96,7 +96,7 @@ _Snoc :: Prism' ByteString (ByteString, Word8)

    However, by including p and f in the class you can write instances that only permit unsnoc or which only permit snoc or where _init and _last are lenses and not traversals. -

    Instances

    (Choice p, Applicative f) => Snoc p f Text Text Char Char 
    (Choice p, Applicative f) => Snoc p f Text Text Char Char 
    (Choice p, Applicative f) => Snoc p f ByteString ByteString Word8 Word8 
    (Choice p, Applicative f) => Snoc p f ByteString ByteString Word8 Word8 
    (Choice p, Applicative f, Unbox a, Unbox b) => Snoc p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f, Storable a, Storable b) => Snoc p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f, Prim a, Prim b) => Snoc p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f) => Snoc p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f) => Snoc p f (Seq a) (Seq b) a b 
    (Choice p, Applicative f) => Snoc p f [a] [b] a b 

    (|>) :: Snoc Reviewed Identity s s a a => s -> a -> sSource

    snoc an element onto the end of a container. +

    Instances

    (Choice p, Applicative f) => Snoc p f Text Text Char Char 
    (Choice p, Applicative f) => Snoc p f Text Text Char Char 
    (Choice p, Applicative f) => Snoc p f ByteString ByteString Word8 Word8 
    (Choice p, Applicative f) => Snoc p f ByteString ByteString Word8 Word8 
    (Choice p, Applicative f, Unbox a, Unbox b) => Snoc p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f, Storable a, Storable b) => Snoc p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f, Prim a, Prim b) => Snoc p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f) => Snoc p f (Vector a) (Vector b) a b 
    (Choice p, Applicative f) => Snoc p f (Seq a) (Seq b) a b 
    (Choice p, Applicative f) => Snoc p f [a] [b] a b 
    (Choice p, Applicative f) => Snoc p f (Deque a) (Deque b) a b 

    (|>) :: Snoc Reviewed Identity s s a a => s -> a -> sSource

    snoc an element onto the end of a container.

    This is an infix alias for snoc.

    snoc :: Snoc Reviewed Identity s s a a => s -> a -> sSource

    snoc an element onto the end of a container.

    unsnoc :: Snoc (->) (Accessor (First (s, a))) s s a a => s -> Maybe (s, a)Source

    Attempt to extract the right-most element from a container, and a version of the container without that element. diff --git a/Control-Lens-Indexed.html b/Control-Lens-Indexed.html index 948cefa19..cc471fb9d 100644 --- a/Control-Lens-Indexed.html +++ b/Control-Lens-Indexed.html @@ -53,7 +53,7 @@

    Methods

    imap :: (i -> a -> b) -> f a -> f bSource

    Map with access to the index.

    Instances

    FunctorWithIndex Int []

    The position in the list is available as the index.

    FunctorWithIndex Int Seq

    The position in the Seq is available as the index. -

    FunctorWithIndex Int IntMap 
    FunctorWithIndex Int Vector 
    FunctorWithIndex () Identity 
    FunctorWithIndex i (Level i) 
    FunctorWithIndex r ((->) r) 
    (Eq k, Hashable k) => FunctorWithIndex k (HashMap k) 
    FunctorWithIndex k (Map k) 
    FunctorWithIndex k ((,) k) 
    FunctorWithIndex i (Jacket i) 
    FunctorWithIndex i (Magma i t b) 

    imapped :: FunctorWithIndex i f => IndexedSetter i (f a) (f b) a bSource

    The IndexedSetter for a FunctorWithIndex. +

    FunctorWithIndex Int IntMap FunctorWithIndex Int Vector FunctorWithIndex Int Deque FunctorWithIndex () Identity FunctorWithIndex i (Level i) FunctorWithIndex r ((->) r) (Eq k, Hashable k) => FunctorWithIndex k (HashMap k) FunctorWithIndex k (Map k) FunctorWithIndex k ((,) k) FunctorWithIndex i f => FunctorWithIndex i (Reverse f) FunctorWithIndex i f => FunctorWithIndex i (Backwards f) FunctorWithIndex i (Jacket i) FunctorWithIndex i (Magma i t b) 

    imapped :: FunctorWithIndex i f => IndexedSetter i (f a) (f b) a bSource

    The IndexedSetter for a FunctorWithIndex.

    If you don't need access to the index, then mapped is more flexible in what it accepts.

    Indexed Foldables

    class Foldable f => FoldableWithIndex i f | f -> i whereSource

    A container that supports folding with an additional index. @@ -67,7 +67,7 @@

    When you don't need access to the index then foldr' is more flexible in what it accepts.

    foldr'ifoldr' . const

    ifoldl' :: (i -> b -> a -> b) -> b -> f a -> bSource

    Fold over the elements of a structure with an index, associating to the left, but strictly.

    When you don't need access to the index then foldlOf' is more flexible in what it accepts. -

    foldlOf' l ≡ ifoldlOf' l . const

    Instances

    FoldableWithIndex Int [] 
    FoldableWithIndex Int Seq 
    FoldableWithIndex Int IntMap 
    FoldableWithIndex Int Vector 
    FoldableWithIndex () Identity 
    FoldableWithIndex i (Level i) 
    (Eq k, Hashable k) => FoldableWithIndex k (HashMap k) 
    FoldableWithIndex k (Map k) 
    FoldableWithIndex k ((,) k) 
    FoldableWithIndex i (Jacket i) 
    FoldableWithIndex i (Magma i t b) 

    ifolded :: FoldableWithIndex i f => IndexedFold i (f a) aSource

    The IndexedFold of a FoldableWithIndex container. +

    foldlOf' l ≡ ifoldlOf' l . const

    Instances

    FoldableWithIndex Int [] 
    FoldableWithIndex Int Seq 
    FoldableWithIndex Int IntMap 
    FoldableWithIndex Int Vector 
    FoldableWithIndex Int Deque 
    FoldableWithIndex () Identity 
    FoldableWithIndex i (Level i) 
    (Eq k, Hashable k) => FoldableWithIndex k (HashMap k) 
    FoldableWithIndex k (Map k) 
    FoldableWithIndex k ((,) k) 
    FoldableWithIndex i f => FoldableWithIndex i (Reverse f) 
    FoldableWithIndex i f => FoldableWithIndex i (Backwards f) 
    FoldableWithIndex i (Jacket i) 
    FoldableWithIndex i (Magma i t b) 

    ifolded :: FoldableWithIndex i f => IndexedFold i (f a) aSource

    The IndexedFold of a FoldableWithIndex container.

    ifolding :: FoldableWithIndex i f => (s -> f a) -> IndexedFold i s aSource

    Obtain a Fold by lifting an operation that returns a Foldable result.

    This can be useful to lift operations from List and elsewhere into a Fold.

    Indexed Foldable Combinators @@ -122,7 +122,7 @@ itraverse (const Identity) ≡ Identity fmap (itraverse f) . itraverse g ≡ getCompose . itraverse (\i -> Compose . fmap (f i) . g i)

    Methods

    itraverse :: Applicative f => (i -> a -> f b) -> t a -> f (t b)Source

    Traverse an indexed container. -

    Indexed Traversable Combinators

    ifor :: (TraversableWithIndex i t, Applicative f) => t a -> (i -> a -> f b) -> f (t b)Source

    Traverse with an index (and the arguments flipped).

    diff --git a/Control-Lens-Internal-Deque.html b/Control-Lens-Internal-Deque.html
    new file mode 100644
    index 000000000..691540a4e
    --- /dev/null
    +++ b/Control-Lens-Internal-Deque.html
    @@ -0,0 +1,5 @@
    +Control.Lens.Internal.Deque

    lens-3.8: Lenses, Folds and Traversals

    Portabilitynon-portable
    Stabilityexperimental
    MaintainerEdward Kmett <ekmett@gmail.com>
    Safe HaskellTrustworthy

    Control.Lens.Internal.Deque

    Description

     

    Synopsis

    Documentation

    data Deque a Source

    A Banker's deque based on Chris Okasaki's "Purely Functional Data Structures" +

    Constructors

    BD !Int [a] !Int [a] 

    fromList :: [a] -> Deque aSource

    \ No newline at end of file diff --git a/Control-Lens-Traversal.html b/Control-Lens-Traversal.html index b65d99315..4c632f33c 100644 --- a/Control-Lens-Traversal.html +++ b/Control-Lens-Traversal.html @@ -235,7 +235,7 @@ (foldMapDefault).

    Methods

    traverse :: Applicative f => (a -> f b) -> t a -> f (t b)

    Map each element of a structure to an action, evaluate these actions from left to right, and collect the results. -

    Instances

    Traversable [] 
    Traversable Maybe 
    Traversable Tree 
    Traversable Seq 
    Traversable ViewL 
    Traversable ViewR 
    Traversable IntMap 
    Traversable Identity 
    Traversable NonEmpty 
    Traversable Mutator 
    Traversable Proxy 
    Traversable Elem 
    Traversable Node 
    Traversable Digit 
    Traversable FingerTree 
    Traversable Vector 
    Traversable (Either a) 
    Traversable ((,) b) 
    Ix i => Traversable (Array i) 
    Traversable (Const m) 
    Traversable (Map k) 
    Traversable f => Traversable (ListT f) 
    Traversable f => Traversable (Reverse f)

    Traverse from right to left. +

    both :: Traversal (a, a) (b, b) a bSource

    Traverse both parts of a tuple with matching types.

    >>> both *~ 10 $ (1,2)
    diff --git a/Numeric-Lens.html b/Numeric-Lens.html
    index c76b39dd9..55e6698ca 100644
    --- a/Numeric-Lens.html
    +++ b/Numeric-Lens.html
    @@ -1,9 +1,13 @@
     Numeric.Lens

    lens-3.8: Lenses, Folds and Traversals

    Portabilityportable
    Stabilityprovisional
    MaintainerEdward Kmett <ekmett@gmail.com>
    Safe HaskellSafe-Infered

    Numeric.Lens

    Description

     

    Synopsis

    Documentation

    base :: (Integral a, Show a) => a -> Prism' String aSource

    A prism that shows and reads integers in base-2 through base-36 +

    lens-3.8: Lenses, Folds and Traversals

    Portabilityportable
    Stabilityprovisional
    MaintainerEdward Kmett <ekmett@gmail.com>
    Safe HaskellSafe-Infered

    Numeric.Lens

    Description

     

    Synopsis

    Documentation

    base :: (Integral a, Show a) => a -> Prism' String aSource

    A prism that shows and reads integers in base-2 through base-36

    >>> "100" ^? base 16
     Just 256
     
    >>> 1767707668033969 ^. re (base 36)
     "helloworld"
    -
    \ No newline at end of file +

    integral :: (Integral a, Integral b) => Prism Integer Integer a bSource

    This Prism extracts can be used to model the fact that every Integral + type is a subset of Integer. +

    Embedding through the Prism only succeeds if the Integer would pass + through unmodified when re-extracted. +

    \ No newline at end of file diff --git a/doc-index-All.html b/doc-index-All.html index 96a469783..22ee7438c 100644 --- a/doc-index-All.html +++ b/doc-index-All.html @@ -1,4 +1,4 @@ lens-3.8: Lenses, Folds and Traversals (Index)

    lens-3.8: Lenses, Folds and Traversals

    Index

    #%%=Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    #%%~Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    #%=Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    #%~Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    #=Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    #~Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    %%=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    %%@=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    %%@~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    %%~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    %=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    %@=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    %@~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    %~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    &Control.Lens.Combinators, Control.Lens.Operators, Control.Lens
    &&=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    &&~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    **=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    **~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    *=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    *~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    +=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    +~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    -=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    -~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    .&.=Data.Bits.Lens
    .&.~Data.Bits.Lens
    .=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    .>Control.Lens.Indexed, Control.Lens.Operators, Control.Lens
    .|.=Data.Bits.Lens
    .|.~Data.Bits.Lens
    .~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    //=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    //~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    :>Control.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens.Operators, Control.Lens
    :>>Control.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    :@Control.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    <#%=Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    <#%~Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    <#=Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    <#~Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    <%=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <%@=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <%@~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <%~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <&&=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <&&~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <&>Control.Lens.Combinators, Control.Lens.Operators, Control.Lens
    <**=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <**~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <*=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <*~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <+=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <+~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <-=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <-~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <.Control.Lens.Indexed, Control.Lens.Operators, Control.Lens
    <.&.=Data.Bits.Lens
    <.&.~Data.Bits.Lens
    <.=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    <.>Control.Lens.Indexed, Control.Lens.Operators, Control.Lens
    <.>=System.FilePath.Lens
    <.>~System.FilePath.Lens
    <.|.=Data.Bits.Lens
    <.|.~Data.Bits.Lens
    <.~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    <//=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <//~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    </>=System.FilePath.Lens
    </>~System.FilePath.Lens
    <<%=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <<%~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <<.=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <<.>=System.FilePath.Lens
    <<.>~System.FilePath.Lens
    <<.~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <</>=System.FilePath.Lens
    <</>~System.FilePath.Lens
    <<>=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <<>~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <<~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <>=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    <>~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    <?=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    <?~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    <^=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <^^=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <^^~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <^~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <|Control.Lens.Cons, Control.Lens.Operators, Control.Lens
    <||=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <||~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    ?=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    ??Control.Lens.Combinators, Control.Lens.Operators, Control.Lens
    ?~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    AccessingControl.Lens.Getter, Control.Lens
    Accessor 
    1 (Type/Class)Control.Lens.Internal.Getter, Control.Lens.Internal, Control.Lens.Getter, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Getter, Control.Lens.Internal, Control.Lens.Getter, Control.Lens
    actControl.Lens.Action, Control.Lens
    ActingControl.Lens.Action, Control.Lens
    ActionControl.Lens.Type, Control.Lens.Action, Control.Lens
    actsControl.Lens.Action, Control.Lens
    afterControl.Parallel.Strategies.Lens
    alaControl.Lens.Wrapped, Control.Lens
    alafControl.Lens.Wrapped, Control.Lens
    ALensControl.Lens.Lens, Control.Lens
    ALens'Control.Lens.Lens, Control.Lens
    allOfControl.Lens.Fold, Control.Lens
    alongsideControl.Lens.Lens, Control.Lens
    andOfControl.Lens.Fold, Control.Lens
    AnEqualityControl.Lens.Equality, Control.Lens
    AnEquality'Control.Lens.Equality, Control.Lens
    AnIndexedLensControl.Lens.Lens, Control.Lens
    AnIndexedLens'Control.Lens.Lens, Control.Lens
    AnIndexedSetterControl.Lens.Setter, Control.Lens
    AnIndexedSetter'Control.Lens.Setter, Control.Lens
    AnIndexedTraversalControl.Lens.Traversal, Control.Lens
    AnIndexedTraversal'Control.Lens.Traversal, Control.Lens
    AnIsoControl.Lens.Iso, Control.Lens
    AnIso'Control.Lens.Iso, Control.Lens
    anonControl.Lens.Iso, Control.Lens
    anyOfControl.Lens.Fold, Control.Lens
    ApControl.Lens.Internal.Zipper
    ApLControl.Lens.Internal.Zipper
    ApRControl.Lens.Internal.Zipper
    APrismControl.Lens.Prism, Control.Lens
    APrism'Control.Lens.Prism, Control.Lens
    AReviewControl.Lens.Review, Control.Lens
    AReview'Control.Lens.Review, Control.Lens
    argumentControl.Lens.Setter, Control.Lens
    AsArithExceptionControl.Exception.Lens
    AsArrayExceptionControl.Exception.Lens
    AsAssertionFailedControl.Exception.Lens
    AsAsyncExceptionControl.Exception.Lens
    AsBlockedIndefinitelyOnMVarControl.Exception.Lens
    AsBlockedIndefinitelyOnSTMControl.Exception.Lens
    AsDeadlockControl.Exception.Lens
    AsDynamicData.Dynamic.Lens
    AsErrorCallControl.Exception.Lens
    ASetterControl.Lens.Setter, Control.Lens
    ASetter'Control.Lens.Setter, Control.Lens
    AsExitCodeSystem.Exit.Lens
    asideControl.Lens.Prism, Control.Lens
    asIndexControl.Lens.Indexed, Control.Lens
    AsIOExceptionControl.Exception.Lens
    AsNestedAtomicallyControl.Exception.Lens
    AsNoMethodErrorControl.Exception.Lens
    AsNonTerminationControl.Exception.Lens
    AsPatternMatchFailControl.Exception.Lens
    AsRecConErrorControl.Exception.Lens
    AsRecSelErrorControl.Exception.Lens
    AsRecUpdErrorControl.Exception.Lens
    assignControl.Lens.Setter, Control.Lens
    asStreamData.Vector.Generic.Lens
    asStreamRData.Vector.Generic.Lens
    asumOfControl.Lens.Fold, Control.Lens
    AtControl.Lens.At, Control.Lens
    atControl.Lens.At, Control.Lens
    ATraversalControl.Lens.Traversal, Control.Lens
    ATraversal'Control.Lens.Traversal, Control.Lens
    auControl.Lens.Iso, Control.Lens
    aufControl.Lens.Iso, Control.Lens
    backwardsControl.Lens.Fold, Control.Lens
    baseNumeric.Lens
    basenameSystem.FilePath.Lens
    Bazaar 
    1 (Type/Class)Control.Lens.Internal.Bazaar, Control.Lens.Internal, Control.Lens.Traversal, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Bazaar, Control.Lens.Internal, Control.Lens.Traversal, Control.Lens
    bazaarControl.Lens.Internal.Bazaar, Control.Lens.Internal
    Bazaar'Control.Lens.Internal.Bazaar, Control.Lens.Internal, Control.Lens.Traversal, Control.Lens
    BazaarT 
    1 (Type/Class)Control.Lens.Internal.Bazaar, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Bazaar, Control.Lens.Internal
    BazaarT'Control.Lens.Internal.Bazaar, Control.Lens.Internal
    besideControl.Lens.Traversal, Control.Lens
    biplateData.Data.Lens
    bitAtData.Bits.Lens
    bitsData.Bits.Lens
    BizarreControl.Lens.Internal.Bazaar, Control.Lens.Internal
    bothControl.Lens.Traversal, Control.Lens
    branchesData.Tree.Lens
    builder 
    1 (Function)Data.Text.Strict.Lens
    2 (Function)Data.Text.Lazy.Lens
    3 (Function)Data.Text.Lens
    BuildTraversalsControl.Lens.TH, Control.Lens
    buildTraversalsControl.Lens.TH, Control.Lens
    byteAtData.Bits.Lens
    bytes 
    1 (Function)Data.ByteString.Strict.Lens
    2 (Function)Data.ByteString.Lazy.Lens
    3 (Function)Data.ByteString.Lens
    catching 
    1 (Function)Control.Monad.Error.Lens
    2 (Function)Control.Exception.Lens
    catching_ 
    1 (Function)Control.Monad.Error.Lens
    2 (Function)Control.Exception.Lens
    censoringControl.Lens.Setter, Control.Lens
    chars 
    1 (Function)Data.ByteString.Strict.Lens
    2 (Function)Data.ByteString.Lazy.Lens
    3 (Function)Data.ByteString.Lens
    childrenControl.Lens.Plated, Control.Lens
    ChoiceControl.Lens.Prism, Control.Lens
    choosingControl.Lens.Lens, Control.Lens
    chosenControl.Lens.Lens, Control.Lens
    chunkingData.List.Split.Lens
    ClassRequiredControl.Lens.TH, Control.Lens
    classRequiredControl.Lens.TH, Control.Lens
    classyRulesControl.Lens.TH, Control.Lens
    clonedData.Vector.Generic.Lens
    cloneIndexedLensControl.Lens.Lens, Control.Lens
    cloneIndexedSetterControl.Lens.Setter, Control.Lens
    cloneIndexedTraversalControl.Lens.Traversal, Control.Lens
    cloneIndexPreservingLensControl.Lens.Lens, Control.Lens
    cloneIndexPreservingSetterControl.Lens.Setter, Control.Lens
    cloneIndexPreservingTraversalControl.Lens.Traversal, Control.Lens
    cloneIsoControl.Lens.Iso, Control.Lens
    cloneLensControl.Lens.Lens, Control.Lens
    clonePrismControl.Lens.Prism, Control.Lens
    cloneSetterControl.Lens.Setter, Control.Lens
    cloneTraversalControl.Lens.Traversal, Control.Lens
    coerceControl.Lens.Internal.Getter, Control.Lens.Internal, Control.Lens.Getter, Control.Lens
    Coil 
    1 (Type/Class)Control.Lens.Internal.Zipper
    2 (Data Constructor)Control.Lens.Internal.Zipper
    complexData.Complex.Lens
    composOpFoldControl.Lens.Plated, Control.Lens
    concatMapOfControl.Lens.Fold, Control.Lens
    concatOfControl.Lens.Fold, Control.Lens
    condensingData.List.Split.Lens
    conFieldsLanguage.Haskell.TH.Lens
    ConjoinedControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    conNamedFieldsLanguage.Haskell.TH.Lens
    ConsControl.Lens.Cons, Control.Lens
    consControl.Lens.Cons, Control.Lens
    ContainsControl.Lens.At, Control.Lens
    containsControl.Lens.At, Control.Lens
    containsAtControl.Lens.At, Control.Lens
    containsIxControl.Lens.At, Control.Lens
    containsLengthControl.Lens.At, Control.Lens
    containsLookupControl.Lens.At, Control.Lens
    containsNControl.Lens.At, Control.Lens
    containsTestControl.Lens.At, Control.Lens
    Context 
    1 (Type/Class)Control.Lens.Internal.Context, Control.Lens.Internal, Control.Lens.Lens, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Context, Control.Lens.Internal, Control.Lens.Lens, Control.Lens
    contextControl.Lens.Internal.Context, Control.Lens.Internal
    Context'Control.Lens.Internal.Context, Control.Lens.Internal, Control.Lens.Lens, Control.Lens
    contextsControl.Lens.Plated, Control.Lens
    contextsOfControl.Lens.Plated, Control.Lens
    contextsOnControl.Lens.Plated, Control.Lens
    contextsOnOfControl.Lens.Plated, Control.Lens
    contramappedControl.Lens.Setter, Control.Lens
    CreateClassControl.Lens.TH, Control.Lens
    createClassControl.Lens.TH, Control.Lens
    CreateInstanceControl.Lens.TH, Control.Lens
    createInstanceControl.Lens.TH, Control.Lens
    curriedControl.Lens.Iso, Control.Lens
    cycledControl.Lens.Fold, Control.Lens
    Deepening 
    1 (Type/Class)Control.Lens.Internal.Level, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Level, Control.Lens.Internal
    deepeningControl.Lens.Internal.Level, Control.Lens.Internal
    defaultRulesControl.Lens.TH, Control.Lens
    delimitersData.List.Split.Lens
    delimitingData.List.Split.Lens
    descriptionSystem.IO.Error.Lens
    dimapControl.Lens.Iso, Control.Lens
    directorySystem.FilePath.Lens
    distribControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    downwardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    droppingControl.Lens.Traversal, Control.Lens
    droppingWhileControl.Lens.Fold, Control.Lens
    EachControl.Lens.Each, Control.Lens
    eachControl.Lens.Each, Control.Lens
    Effect 
    1 (Type/Class)Control.Lens.Internal.Action, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Action, Control.Lens.Internal
    EffectiveControl.Lens.Internal.Action, Control.Lens.Internal, Control.Lens.Action, Control.Lens
    effectiveControl.Lens.Internal.Action, Control.Lens.Internal
    EffectRWS 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    elementControl.Lens.Traversal, Control.Lens
    elementOfControl.Lens.Traversal, Control.Lens
    elementsControl.Lens.Traversal, Control.Lens
    elementsOfControl.Lens.Traversal, Control.Lens
    elemOfControl.Lens.Fold, Control.Lens
    endingByData.List.Split.Lens
    endingByOneOfData.List.Split.Lens
    enumControl.Lens.Iso, Control.Lens
    EqualityControl.Lens.Type, Control.Lens.Equality, Control.Lens
    Equality'Control.Lens.Type, Control.Lens.Equality, Control.Lens
    Err 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    errnoSystem.IO.Error.Lens
    errorTypeSystem.IO.Error.Lens
    evalOfControl.Parallel.Strategies.Lens
    exceptionControl.Exception.Lens
    Exchange 
    1 (Type/Class)Control.Lens.Internal.Iso, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Iso, Control.Lens.Internal
    extensionSystem.FilePath.Lens
    farthestControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    Field1Control.Lens.Tuple, Control.Lens
    Field2Control.Lens.Tuple, Control.Lens
    Field3Control.Lens.Tuple, Control.Lens
    Field4Control.Lens.Tuple, Control.Lens
    Field5Control.Lens.Tuple, Control.Lens
    Field6Control.Lens.Tuple, Control.Lens
    Field7Control.Lens.Tuple, Control.Lens
    Field8Control.Lens.Tuple, Control.Lens
    Field9Control.Lens.Tuple, Control.Lens
    fileNameSystem.IO.Error.Lens
    filenameSystem.FilePath.Lens
    filteredControl.Lens.Fold, Control.Lens
    findOfControl.Lens.Fold, Control.Lens
    firstOfControl.Lens.Fold, Control.Lens
    flippedControl.Lens.Iso, Control.Lens
    Flow 
    1 (Type/Class)Control.Lens.Internal.Zipper
    2 (Data Constructor)Control.Lens.Internal.Zipper
    Flows 
    1 (Type/Class)Control.Lens.Internal.Level, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Level, Control.Lens.Internal
    focalPointControl.Lens.Internal.Zipper
    focusControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    focusedContextControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    Focusing 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingErr 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingMay 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingOn 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingPlus 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingWith 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FoldControl.Lens.Type, Control.Lens.Fold, Control.Lens
    FoldableWithIndexControl.Lens.Indexed, Control.Lens
    foldedControl.Lens.Fold, Control.Lens
    Folding 
    1 (Type/Class)Control.Lens.Internal.Fold, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Fold, Control.Lens.Internal
    foldingControl.Lens.Fold, Control.Lens
    foldl1OfControl.Lens.Fold, Control.Lens
    foldl1Of'Control.Lens.Fold, Control.Lens
    foldlMOfControl.Lens.Fold, Control.Lens
    foldlOfControl.Lens.Fold, Control.Lens
    foldlOf'Control.Lens.Fold, Control.Lens
    foldMapOfControl.Lens.Fold, Control.Lens
    foldOfControl.Lens.Fold, Control.Lens
    foldr1OfControl.Lens.Fold, Control.Lens
    foldr1Of'Control.Lens.Fold, Control.Lens
    foldrMOfControl.Lens.Fold, Control.Lens
    foldrOfControl.Lens.Fold, Control.Lens
    foldrOf'Control.Lens.Fold, Control.Lens
    forced 
    1 (Function)Data.Vector.Lens
    2 (Function)Data.Vector.Generic.Lens
    ForkControl.Lens.Internal.Zipper
    forMOfControl.Lens.Traversal, Control.Lens
    forMOf_Control.Lens.Fold, Control.Lens
    forOfControl.Lens.Traversal, Control.Lens
    forOf_Control.Lens.Fold, Control.Lens
    fromControl.Lens.Iso, Control.Lens
    fromEqControl.Lens.Equality, Control.Lens
    fromWithinControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    FunctorWithIndexControl.Lens.Indexed, Control.Lens
    GenerateSignaturesControl.Lens.TH, Control.Lens
    generateSignaturesControl.Lens.TH, Control.Lens
    genericGHC.Generics.Lens
    generic1GHC.Generics.Lens
    getEffectControl.Lens.Internal.Action, Control.Lens.Internal
    getEffectRWSControl.Lens.Internal.Zoom, Control.Lens.Internal
    getErrControl.Lens.Internal.Zoom, Control.Lens.Internal
    getFoldingControl.Lens.Internal.Fold, Control.Lens.Internal
    getLeftmostControl.Lens.Internal.Fold, Control.Lens.Internal
    getMaxControl.Lens.Internal.Fold, Control.Lens.Internal
    getMayControl.Lens.Internal.Zoom, Control.Lens.Internal
    getMinControl.Lens.Internal.Fold, Control.Lens.Internal
    getRightmostControl.Lens.Internal.Fold, Control.Lens.Internal
    getSequencedControl.Lens.Internal.Fold, Control.Lens.Internal
    GettableControl.Lens.Internal.Getter, Control.Lens.Internal, Control.Lens.Getter, Control.Lens
    GetterControl.Lens.Type, Control.Lens.Getter, Control.Lens
    GettingControl.Lens.Getter, Control.Lens
    getTraversedControl.Lens.Internal.Fold, Control.Lens.Internal
    GTraversalGHC.Generics.Lens
    gtraverseData.Data.Lens
    handleSystem.IO.Error.Lens
    HandleSingletonsControl.Lens.TH, Control.Lens
    handleSingletonsControl.Lens.TH, Control.Lens
    handling 
    1 (Function)Control.Monad.Error.Lens
    2 (Function)Control.Exception.Lens
    handling_ 
    1 (Function)Control.Monad.Error.Lens
    2 (Function)Control.Exception.Lens
    hasControl.Lens.Fold, Control.Lens
    hasn'tControl.Lens.Fold, Control.Lens
    HasNameLanguage.Haskell.TH.Lens
    HasTypeVarsLanguage.Haskell.TH.Lens
    headOfControl.Lens.Fold, Control.Lens
    holesControl.Lens.Plated, Control.Lens
    holesOfControl.Lens.Traversal, Control.Lens
    holesOnControl.Lens.Plated, Control.Lens
    holesOnOfControl.Lens.Plated, Control.Lens
    iactControl.Lens.Action, Control.Lens
    iallControl.Lens.Indexed, Control.Lens
    iallOfControl.Lens.Fold, Control.Lens
    ianyControl.Lens.Indexed, Control.Lens
    ianyOfControl.Lens.Fold, Control.Lens
    icensoringControl.Lens.Setter, Control.Lens
    icomposeControl.Lens.Indexed, Control.Lens
    iconcatMapControl.Lens.Indexed, Control.Lens
    iconcatMapOfControl.Lens.Fold, Control.Lens
    Identical 
    1 (Type/Class)Control.Lens.Equality, Control.Lens
    2 (Data Constructor)Control.Lens.Equality, Control.Lens
    idownwardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    idroppingWhileControl.Lens.Fold, Control.Lens
    iduplicateControl.Lens.Internal.Context, Control.Lens.Internal
    iexperimentControl.Lens.Internal.Context, Control.Lens.Internal
    iextendControl.Lens.Internal.Context, Control.Lens.Internal
    iextractControl.Lens.Internal.Context, Control.Lens.Internal
    ifilteredControl.Lens.Fold, Control.Lens
    ifindControl.Lens.Indexed, Control.Lens
    ifindOfControl.Lens.Fold, Control.Lens
    ifmapControl.Lens.Internal.Context, Control.Lens.Internal
    ifoldedControl.Lens.Indexed, Control.Lens
    ifoldingControl.Lens.Indexed, Control.Lens
    ifoldlControl.Lens.Indexed, Control.Lens
    ifoldl'Control.Lens.Indexed, Control.Lens
    ifoldlMControl.Lens.Indexed, Control.Lens
    ifoldlMOfControl.Lens.Fold, Control.Lens
    ifoldlOfControl.Lens.Fold, Control.Lens
    ifoldlOf'Control.Lens.Fold, Control.Lens
    ifoldMapControl.Lens.Indexed, Control.Lens
    ifoldMapOfControl.Lens.Fold, Control.Lens
    ifoldrControl.Lens.Indexed, Control.Lens
    ifoldr'Control.Lens.Indexed, Control.Lens
    ifoldrMControl.Lens.Indexed, Control.Lens
    ifoldrMOfControl.Lens.Fold, Control.Lens
    ifoldrOfControl.Lens.Fold, Control.Lens
    ifoldrOf'Control.Lens.Fold, Control.Lens
    iforControl.Lens.Indexed, Control.Lens
    iforMControl.Lens.Indexed, Control.Lens
    iforMOfControl.Lens.Traversal, Control.Lens
    iforMOf_Control.Lens.Fold, Control.Lens
    iforM_Control.Lens.Indexed, Control.Lens
    iforOfControl.Lens.Traversal, Control.Lens
    iforOf_Control.Lens.Fold, Control.Lens
    ifor_Control.Lens.Indexed, Control.Lens
    ifromWithinControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    ignoredControl.Lens.Traversal, Control.Lens
    ilensControl.Lens.Lens, Control.Lens
    ilevelsControl.Lens.Level, Control.Lens
    ilisteningControl.Lens.Getter, Control.Lens
    ilisteningsControl.Lens.Getter, Control.Lens
    imagmaControl.Lens.Iso, Control.Lens
    imapControl.Lens.Indexed, Control.Lens
    imapAccumLControl.Lens.Indexed, Control.Lens
    imapAccumLOfControl.Lens.Traversal, Control.Lens
    imapAccumRControl.Lens.Indexed, Control.Lens
    imapAccumROfControl.Lens.Traversal, Control.Lens
    imapMControl.Lens.Indexed, Control.Lens
    imapMOfControl.Lens.Traversal, Control.Lens
    imapMOf_Control.Lens.Fold, Control.Lens
    imapM_Control.Lens.Indexed, Control.Lens
    imapOfControl.Lens.Setter, Control.Lens
    imappedControl.Lens.Indexed, Control.Lens
    IndexControl.Lens.Each, Control.Lens
    indexControl.Lens.Indexed, Control.Lens
    IndexableControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    Indexed 
    1 (Type/Class)Control.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    indexedControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    IndexedActingControl.Lens.Action, Control.Lens
    IndexedActionControl.Lens.Type, Control.Lens.Action, Control.Lens
    IndexedComonadControl.Lens.Internal.Context, Control.Lens.Internal
    IndexedComonadStoreControl.Lens.Internal.Context, Control.Lens.Internal
    IndexedFoldControl.Lens.Type, Control.Lens.Fold, Control.Lens
    IndexedFunctorControl.Lens.Internal.Context, Control.Lens.Internal
    IndexedGetterControl.Lens.Type, Control.Lens.Getter, Control.Lens
    IndexedGettingControl.Lens.Getter, Control.Lens
    IndexedLensControl.Lens.Type, Control.Lens.Lens, Control.Lens
    IndexedLens'Control.Lens.Type, Control.Lens.Lens, Control.Lens
    IndexedLensLikeControl.Lens.Type, Control.Lens
    IndexedLensLike'Control.Lens.Type, Control.Lens
    IndexedMonadicFoldControl.Lens.Type, Control.Lens.Action, Control.Lens
    IndexedSetterControl.Lens.Type, Control.Lens.Setter, Control.Lens
    IndexedSetter'Control.Lens.Type, Control.Lens.Setter, Control.Lens
    IndexedTraversalControl.Lens.Type, Control.Lens.Traversal, Control.Lens
    IndexedTraversal'Control.Lens.Type, Control.Lens.Traversal, Control.Lens
    Indexing 
    1 (Type/Class)Control.Lens.Internal.Indexed, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Indexed, Control.Lens.Internal
    indexingControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    Indexing64 
    1 (Type/Class)Control.Lens.Internal.Indexed, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Indexed, Control.Lens.Internal
    indexing64Control.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    IndexPreservingActionControl.Lens.Type, Control.Lens
    IndexPreservingFoldControl.Lens.Type, Control.Lens
    IndexPreservingGetterControl.Lens.Type, Control.Lens
    IndexPreservingLensControl.Lens.Type, Control.Lens
    IndexPreservingLens'Control.Lens.Type, Control.Lens
    IndexPreservingMonadicFoldControl.Lens.Type, Control.Lens
    IndexPreservingSetterControl.Lens.Type, Control.Lens
    IndexPreservingSetter'Control.Lens.Type, Control.Lens
    IndexPreservingTraversalControl.Lens.Type, Control.Lens
    IndexPreservingTraversal'Control.Lens.Type, Control.Lens
    indicesControl.Lens.Indexed, Control.Lens
    ineffectiveControl.Lens.Internal.Action, Control.Lens.Internal
    insideControl.Lens.Lens, Control.Lens
    ioverControl.Lens.Setter, Control.Lens
    ipartsOfControl.Lens.Traversal, Control.Lens
    ipartsOf'Control.Lens.Traversal, Control.Lens
    ipassingControl.Lens.Setter, Control.Lens
    ipeekControl.Lens.Internal.Context, Control.Lens.Internal
    ipeeksControl.Lens.Internal.Context, Control.Lens.Internal
    iperformControl.Lens.Action, Control.Lens
    iperformsControl.Lens.Action, Control.Lens
    iplensControl.Lens.Lens, Control.Lens
    iposControl.Lens.Internal.Context, Control.Lens.Internal
    ipreControl.Lens.Fold, Control.Lens
    ipreuseControl.Lens.Fold, Control.Lens
    ipreusesControl.Lens.Fold, Control.Lens
    ipreviewControl.Lens.Fold, Control.Lens
    ipreviewsControl.Lens.Fold, Control.Lens
    IsByteStringData.ByteString.Lens
    iseekControl.Lens.Internal.Context, Control.Lens.Internal
    iseeksControl.Lens.Internal.Context, Control.Lens.Internal
    isetsControl.Lens.Setter, Control.Lens
    isn'tControl.Lens.Prism, Control.Lens
    IsoControl.Lens.Type, Control.Lens.Iso, Control.Lens
    isoControl.Lens.Iso, Control.Lens
    Iso'Control.Lens.Type, Control.Lens.Iso, Control.Lens
    isoRulesControl.Lens.TH, Control.Lens
    IsTextData.Text.Lens
    itakingWhileControl.Lens.Fold, Control.Lens
    iteratedControl.Lens.Fold, Control.Lens
    itoListControl.Lens.Indexed, Control.Lens
    itoListOfControl.Lens.Fold, Control.Lens
    itraverseControl.Lens.Indexed, Control.Lens
    itraversedControl.Lens.Indexed, Control.Lens
    itraverseOfControl.Lens.Traversal, Control.Lens
    itraverseOf_Control.Lens.Fold, Control.Lens
    itraverse_Control.Lens.Indexed, Control.Lens
    iunsafePartsOfControl.Lens.Traversal, Control.Lens
    iunsafePartsOf'Control.Lens.Traversal, Control.Lens
    iuseControl.Lens.Getter, Control.Lens
    iusesControl.Lens.Getter, Control.Lens
    iviewControl.Lens.Getter, Control.Lens
    iviewsControl.Lens.Getter, Control.Lens
    iwithinControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    iwithinsControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    ixControl.Lens.At, Control.Lens
    ixAtControl.Lens.At, Control.Lens
    ixEachControl.Lens.At, Control.Lens
    IxedControl.Lens.At, Control.Lens
    ixmappedData.Array.Lens
    JacketControl.Lens.Internal.Zipper
    jacketControl.Lens.Internal.Zipper
    jacketInsControl.Lens.Internal.Zipper
    jacketOutsControl.Lens.Internal.Zipper
    jerksControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    jerkToControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    keepFinalBlanksData.List.Split.Lens
    keepInitialBlanksData.List.Split.Lens
    lastOfControl.Lens.Fold, Control.Lens
    LeafControl.Lens.Internal.Zipper
    leafControl.Lens.Internal.Magma, Control.Lens.Internal
    left'Control.Lens.Prism, Control.Lens
    LeftmostControl.Lens.Internal.Fold, Control.Lens.Internal, Control.Lens.Fold, Control.Lens
    leftmostControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    leftwardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    lengthOfControl.Lens.Fold, Control.Lens
    LensControl.Lens.Type, Control.Lens.Lens, Control.Lens
    lensControl.Lens.Lens, Control.Lens
    Lens'Control.Lens.Type, Control.Lens.Lens, Control.Lens
    lensClassControl.Lens.TH, Control.Lens
    lensedControl.Lens.Internal.Zipper
    lensFieldControl.Lens.TH, Control.Lens
    LensFlagControl.Lens.TH, Control.Lens
    lensFlagsControl.Lens.TH, Control.Lens
    lensIsoControl.Lens.TH, Control.Lens
    LensLikeControl.Lens.Type, Control.Lens
    LensLike'Control.Lens.Type, Control.Lens
    LensRules 
    1 (Type/Class)Control.Lens.TH, Control.Lens
    2 (Data Constructor)Control.Lens.TH, Control.Lens
    lensRulesControl.Lens.TH, Control.Lens
    LevelControl.Lens.Internal.Level, Control.Lens.Internal, Control.Lens.Level, Control.Lens
    levelsControl.Lens.Level, Control.Lens
    liftActControl.Lens.Action, Control.Lens
    liftedControl.Lens.Setter, Control.Lens
    liningByData.List.Split.Lens
    listeningControl.Lens.Getter, Control.Lens
    listeningsControl.Lens.Getter, Control.Lens
    LLeafControl.Lens.Internal.Fold, Control.Lens.Internal
    lmapControl.Lens.Iso, Control.Lens
    locationSystem.IO.Error.Lens
    lociControl.Lens.Traversal, Control.Lens
    locusControl.Lens.Lens, Control.Lens
    LoupeControl.Lens.Loupe, Control.Lens
    LPureControl.Lens.Internal.Fold, Control.Lens.Internal
    LStepControl.Lens.Internal.Fold, Control.Lens.Internal
    Mafic 
    1 (Type/Class)Control.Lens.Internal.Magma, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Magma, Control.Lens.Internal
    MagmaControl.Lens.Internal.Magma, Control.Lens.Internal, Control.Lens.Iso, Control.Lens
    magmaControl.Lens.Iso, Control.Lens
    MagmaApControl.Lens.Internal.Magma, Control.Lens.Internal
    MagmaFmapControl.Lens.Internal.Magma, Control.Lens.Internal
    MagmaLeafControl.Lens.Internal.Magma, Control.Lens.Internal
    MagmaPureControl.Lens.Internal.Magma, Control.Lens.Internal
    MagnifiedControl.Lens.Internal.Zoom, Control.Lens.Internal
    MagnifyControl.Lens.Zoom, Control.Lens
    magnifyControl.Lens.Zoom, Control.Lens
    makeClassyControl.Lens.TH, Control.Lens
    makeClassyForControl.Lens.TH, Control.Lens
    makeIsoControl.Lens.TH, Control.Lens
    makeLensesControl.Lens.TH, Control.Lens
    makeLensesForControl.Lens.TH, Control.Lens
    makeLensesWithControl.Lens.TH, Control.Lens
    makePrismsControl.Lens.TH, Control.Lens
    makeWrappedControl.Lens.TH, Control.Lens
    mapAccumLOfControl.Lens.Traversal, Control.Lens
    mapAccumROfControl.Lens.Traversal, Control.Lens
    mapEqControl.Lens.Equality, Control.Lens
    mapMOfControl.Lens.Traversal, Control.Lens
    mapMOf_Control.Lens.Fold, Control.Lens
    mapOfControl.Lens.Setter, Control.Lens
    mappedControl.Lens.Setter, Control.Lens
    mappingControl.Lens.Iso, Control.Lens
    Market 
    1 (Type/Class)Control.Lens.Internal.Prism, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Prism, Control.Lens.Internal
    Market'Control.Lens.Internal.Prism, Control.Lens.Internal
    Max 
    1 (Type/Class)Control.Lens.Internal.Fold, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Fold, Control.Lens.Internal
    maximalControl.Lens.Internal.Zipper
    maximumByOfControl.Lens.Fold, Control.Lens
    maximumOfControl.Lens.Fold, Control.Lens
    May 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    membersData.IntSet.Lens
    Min 
    1 (Type/Class)Control.Lens.Internal.Fold, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Fold, Control.Lens.Internal
    minimumByOfControl.Lens.Fold, Control.Lens
    minimumOfControl.Lens.Fold, Control.Lens
    Molten 
    1 (Type/Class)Control.Lens.Internal.Magma, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Magma, Control.Lens.Internal
    MonadicFoldControl.Lens.Type, Control.Lens.Action, Control.Lens
    movelControl.Lens.Internal.Zipper
    moverControl.Lens.Internal.Zipper
    moveToControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    moveTowardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    msumOfControl.Lens.Fold, Control.Lens
    Mutator 
    1 (Type/Class)Control.Lens.Internal.Setter, Control.Lens.Internal, Control.Lens.Setter, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Setter, Control.Lens.Internal
    nameLanguage.Haskell.TH.Lens
    noEffectControl.Lens.Internal.Getter, Control.Lens.Internal
    NoMaxControl.Lens.Internal.Fold, Control.Lens.Internal
    NoMinControl.Lens.Internal.Fold, Control.Lens.Internal
    nonControl.Lens.Iso, Control.Lens
    notElemOfControl.Lens.Fold, Control.Lens
    notNullOfControl.Lens.Fold, Control.Lens
    nullLeftControl.Lens.Internal.Zipper
    nullOfControl.Lens.Fold, Control.Lens
    nullRightControl.Lens.Internal.Zipper
    offsetControl.Lens.Internal.Zipper
    onceUponData.Data.Lens
    onceUpon'Data.Data.Lens
    OneControl.Lens.Internal.Level, Control.Lens.Internal
    opControl.Lens.Wrapped, Control.Lens
    ordinals 
    1 (Function)Data.Vector.Lens
    2 (Function)Data.Vector.Generic.Lens
    orOfControl.Lens.Fold, Control.Lens
    outsideControl.Lens.Prism, Control.Lens
    OverControl.Lens.Type, Control.Lens
    overControl.Lens.Setter, Control.Lens
    Over'Control.Lens.Type, Control.Lens
    OverloadedControl.Lens.Type, Control.Lens
    Overloaded'Control.Lens.Type, Control.Lens
    OverloadingControl.Lens.Type, Control.Lens
    Overloading'Control.Lens.Type, Control.Lens
    packed 
    1 (Function)Data.Text.Strict.Lens
    2 (Function)Data.Text.Lazy.Lens
    3 (Function)Data.Text.Lens
    packedBytes 
    1 (Function)Data.ByteString.Strict.Lens
    2 (Function)Data.ByteString.Lazy.Lens
    3 (Function)Data.ByteString.Lens
    packedChars 
    1 (Function)Data.ByteString.Strict.Lens
    2 (Function)Data.ByteString.Lazy.Lens
    3 (Function)Data.ByteString.Lens
    paraControl.Lens.Plated, Control.Lens
    paraOfControl.Lens.Plated, Control.Lens
    parOfControl.Parallel.Strategies.Lens
    PartialLensesControl.Lens.TH, Control.Lens
    partialLensesControl.Lens.TH, Control.Lens
    partsControl.Lens.Plated, Control.Lens
    partsOfControl.Lens.Traversal, Control.Lens
    partsOf'Control.Lens.Traversal, Control.Lens
    passingControl.Lens.Setter, Control.Lens
    PathControl.Lens.Internal.Zipper
    pathsizeControl.Lens.Internal.Zipper
    peelControl.Lens.Internal.Zipper
    performControl.Lens.Action, Control.Lens
    performsControl.Lens.Action, Control.Lens
    plateControl.Lens.Plated, Control.Lens
    PlatedControl.Lens.Plated, Control.Lens
    preControl.Lens.Fold, Control.Lens
    Pretext 
    1 (Type/Class)Control.Lens.Internal.Context, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Context, Control.Lens.Internal
    Pretext'Control.Lens.Internal.Context, Control.Lens.Internal
    PretextT 
    1 (Type/Class)Control.Lens.Internal.Context, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Context, Control.Lens.Internal
    PretextT'Control.Lens.Internal.Context, Control.Lens.Internal
    preuseControl.Lens.Fold, Control.Lens
    preusesControl.Lens.Fold, Control.Lens
    previewControl.Lens.Fold, Control.Lens
    previewsControl.Lens.Fold, Control.Lens
    PrismControl.Lens.Type, Control.Lens.Prism, Control.Lens
    prismControl.Lens.Prism, Control.Lens
    Prism'Control.Lens.Type, Control.Lens.Prism, Control.Lens
    prism'Control.Lens.Prism, Control.Lens
    productOfControl.Lens.Fold, Control.Lens
    ProfunctorControl.Lens.Iso, Control.Lens
    PureControl.Lens.Internal.Zipper
    reControl.Lens.Review, Control.Lens
    recoilControl.Lens.Internal.Zipper
    recompressControl.Lens.Internal.Zipper
    reflectFoldControl.Lens.Reified, Control.Lens
    reflectGetterControl.Lens.Reified, Control.Lens
    reflectIndexedGetterControl.Lens.Reified, Control.Lens
    reflectIndexedLensControl.Lens.Reified, Control.Lens
    reflectIndexedSetterControl.Lens.Reified, Control.Lens
    reflectIndexedTraversalControl.Lens.Reified, Control.Lens
    reflectIsoControl.Lens.Reified, Control.Lens
    reflectLensControl.Lens.Reified, Control.Lens
    reflectPrismControl.Lens.Reified, Control.Lens
    reflectSetterControl.Lens.Reified, Control.Lens
    reflectTraversalControl.Lens.Reified, Control.Lens
    ReifiedFoldControl.Lens.Reified, Control.Lens
    ReifiedGetterControl.Lens.Reified, Control.Lens
    ReifiedIndexedGetterControl.Lens.Reified, Control.Lens
    ReifiedIndexedLensControl.Lens.Reified, Control.Lens
    ReifiedIndexedLens'Control.Lens.Reified, Control.Lens
    ReifiedIndexedSetterControl.Lens.Reified, Control.Lens
    ReifiedIndexedSetter'Control.Lens.Reified, Control.Lens
    ReifiedIndexedTraversalControl.Lens.Reified, Control.Lens
    ReifiedIndexedTraversal'Control.Lens.Reified, Control.Lens
    ReifiedIsoControl.Lens.Reified, Control.Lens
    ReifiedIso'Control.Lens.Reified, Control.Lens
    ReifiedLensControl.Lens.Reified, Control.Lens
    ReifiedLens'Control.Lens.Reified, Control.Lens
    ReifiedPrismControl.Lens.Reified, Control.Lens
    ReifiedPrism'Control.Lens.Reified, Control.Lens
    ReifiedSetterControl.Lens.Reified, Control.Lens
    ReifiedSetter'Control.Lens.Reified, Control.Lens
    ReifiedTraversalControl.Lens.Reified, Control.Lens
    ReifiedTraversal'Control.Lens.Reified, Control.Lens
    ReifyFoldControl.Lens.Reified, Control.Lens
    ReifyGetterControl.Lens.Reified, Control.Lens
    ReifyIndexedGetterControl.Lens.Reified, Control.Lens
    ReifyIndexedLensControl.Lens.Reified, Control.Lens
    ReifyIndexedSetterControl.Lens.Reified, Control.Lens
    ReifyIndexedTraversalControl.Lens.Reified, Control.Lens
    ReifyIsoControl.Lens.Reified, Control.Lens
    ReifyLensControl.Lens.Reified, Control.Lens
    ReifyPrismControl.Lens.Reified, Control.Lens
    ReifySetterControl.Lens.Reified, Control.Lens
    ReifyTraversalControl.Lens.Reified, Control.Lens
    reindexedControl.Lens.Indexed, Control.Lens
    repeatedControl.Lens.Fold, Control.Lens
    replicatedControl.Lens.Fold, Control.Lens
    restoreNearTapeControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    restoreNearTrackControl.Lens.Internal.Zipper
    restoreTapeControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    restoreTrackControl.Lens.Internal.Zipper
    resultAtControl.Lens.At, Control.Lens
    retaggedControl.Lens.Internal.Review, Control.Lens.Internal, Control.Lens.Review, Control.Lens
    reuseControl.Lens.Review, Control.Lens
    reusesControl.Lens.Review, Control.Lens
    reversed 
    1 (Function)Data.Vector.Lens
    2 (Function)Data.Vector.Generic.Lens
    ReviewControl.Lens.Review, Control.Lens
    reviewControl.Lens.Review, Control.Lens
    Review'Control.Lens.Review, Control.Lens
    ReviewableControl.Lens.Internal.Review, Control.Lens.Internal, Control.Lens.Review, Control.Lens
    Reviewed 
    1 (Type/Class)Control.Lens.Internal.Review, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Review, Control.Lens.Internal
    reviewsControl.Lens.Review, Control.Lens
    rewriteControl.Lens.Plated, Control.Lens
    rewriteMControl.Lens.Plated, Control.Lens
    rewriteMOfControl.Lens.Plated, Control.Lens
    rewriteMOnControl.Lens.Plated, Control.Lens
    rewriteMOnOfControl.Lens.Plated, Control.Lens
    rewriteOfControl.Lens.Plated, Control.Lens
    rewriteOnControl.Lens.Plated, Control.Lens
    rewriteOnOfControl.Lens.Plated, Control.Lens
    rezipControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    right'Control.Lens.Prism, Control.Lens
    RightmostControl.Lens.Internal.Fold, Control.Lens.Internal, Control.Lens.Fold, Control.Lens
    rightmostControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    rightwardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    RLeafControl.Lens.Internal.Fold, Control.Lens.Internal
    rmapControl.Lens.Iso, Control.Lens
    rootData.Tree.Lens
    RPureControl.Lens.Internal.Fold, Control.Lens.Internal
    RStepControl.Lens.Internal.Fold, Control.Lens.Internal
    runAccessorControl.Lens.Internal.Getter, Control.Lens.Internal, Control.Lens.Getter, Control.Lens
    runBazaarControl.Lens.Internal.Bazaar, Control.Lens.Internal, Control.Lens.Traversal, Control.Lens
    runBazaarTControl.Lens.Internal.Bazaar, Control.Lens.Internal
    runDeepeningControl.Lens.Internal.Level, Control.Lens.Internal
    runEqControl.Lens.Equality, Control.Lens
    runFlowControl.Lens.Internal.Zipper
    runFlowsControl.Lens.Internal.Level, Control.Lens.Internal
    runIndexedControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    runIndexingControl.Lens.Internal.Indexed, Control.Lens.Internal
    runIndexing64Control.Lens.Internal.Indexed, Control.Lens.Internal
    runMaficControl.Lens.Internal.Magma, Control.Lens.Internal
    runMagmaControl.Lens.Internal.Magma, Control.Lens.Internal
    runMoltenControl.Lens.Internal.Magma, Control.Lens.Internal
    runMutatorControl.Lens.Internal.Setter, Control.Lens.Internal
    runPretextControl.Lens.Internal.Context, Control.Lens.Internal
    runPretextTControl.Lens.Internal.Context, Control.Lens.Internal
    runReviewedControl.Lens.Internal.Review, Control.Lens.Internal
    runTakingWhileControl.Lens.Internal.Magma, Control.Lens.Internal
    saveTapeControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    scanl1OfControl.Lens.Traversal, Control.Lens
    scanr1OfControl.Lens.Traversal, Control.Lens
    scribeControl.Lens.Setter, Control.Lens
    sellControl.Lens.Internal.Context, Control.Lens.Internal
    SellableControl.Lens.Internal.Context, Control.Lens.Internal
    seqOfControl.Seq.Lens
    sequenceAOfControl.Lens.Traversal, Control.Lens
    sequenceAOf_Control.Lens.Fold, Control.Lens
    Sequenced 
    1 (Type/Class)Control.Lens.Internal.Fold, Control.Lens.Internal, Control.Lens.Fold, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Fold, Control.Lens.Internal
    sequenceOfControl.Lens.Traversal, Control.Lens
    sequenceOf_Control.Lens.Fold, Control.Lens
    setControl.Lens.Setter, Control.Lens
    set'Control.Lens.Setter, Control.Lens
    setmapped 
    1 (Function)Data.Set.Lens
    2 (Function)Data.HashSet.Lens
    3 (Function)Data.IntSet.Lens
    setOf 
    1 (Function)Data.Set.Lens
    2 (Function)Data.HashSet.Lens
    3 (Function)Data.IntSet.Lens
    setsControl.Lens.Setter, Control.Lens
    SettableControl.Lens.Internal.Setter, Control.Lens.Internal, Control.Lens.Setter, Control.Lens
    SetterControl.Lens.Type, Control.Lens.Setter, Control.Lens
    Setter'Control.Lens.Type, Control.Lens.Setter, Control.Lens
    SettingControl.Lens.Setter, Control.Lens
    settingControl.Lens.Setter, Control.Lens
    Setting'Control.Lens.Setter, Control.Lens
    SimpleControl.Lens.Type, Control.Lens
    simpleControl.Lens.Iso, Control.Lens
    SimpleIndexedSetterControl.Lens.Simple, Control.Lens
    SimpleIndexedTraversalControl.Lens.Simple, Control.Lens
    SimpleIsoControl.Lens.Simple, Control.Lens
    SimpleLensControl.Lens.Simple, Control.Lens
    SimpleLensesControl.Lens.TH, Control.Lens
    simpleLensesControl.Lens.TH, Control.Lens
    SimpleLoupeControl.Lens.Loupe, Control.Lens
    SimplePrismControl.Lens.Simple, Control.Lens
    SimpleReifiedIndexedSetterControl.Lens.Simple, Control.Lens
    SimpleReifiedIndexedTraversalControl.Lens.Simple, Control.Lens
    SimpleReifiedLensControl.Lens.Simple, Control.Lens
    SimpleReifiedSetterControl.Lens.Simple, Control.Lens
    SimpleReifiedTraversalControl.Lens.Simple, Control.Lens
    SimpleSetterControl.Lens.Simple, Control.Lens
    SimpleTraversalControl.Lens.Simple, Control.Lens
    simplyControl.Lens.Equality, Control.Lens
    SingletonAndFieldControl.Lens.TH, Control.Lens
    singletonAndFieldControl.Lens.TH, Control.Lens
    SingletonIsoControl.Lens.TH, Control.Lens
    singletonIsoControl.Lens.TH, Control.Lens
    SingletonRequiredControl.Lens.TH, Control.Lens
    singletonRequiredControl.Lens.TH, Control.Lens
    singularControl.Lens.Traversal, Control.Lens
    sizeControl.Lens.Internal.Zipper
    sliced 
    1 (Function)Data.Sequence.Lens
    2 (Function)Data.Vector.Lens
    3 (Function)Data.Vector.Generic.Lens
    slicedFromData.Sequence.Lens
    slicedToData.Sequence.Lens
    Snoc 
    1 (Data Constructor)Control.Lens.Internal.Zipper
    2 (Type/Class)Control.Lens.Cons, Control.Lens
    snocControl.Lens.Cons, Control.Lens
    splittingData.List.Split.Lens
    splittingOnData.List.Split.Lens
    splittingOneOfData.List.Split.Lens
    splittingPlacesData.List.Split.Lens
    splittingPlacesBlanksData.List.Split.Lens
    splittingWhenData.List.Split.Lens
    StartControl.Lens.Internal.Zipper
    startlControl.Lens.Internal.Zipper
    startrControl.Lens.Internal.Zipper
    storingControl.Lens.Lens, Control.Lens.Loupe, Control.Lens
    StrictControl.Lens.Iso, Control.Lens
    strictControl.Lens.Iso, Control.Lens
    strippingPrefixData.List.Lens
    substEqControl.Lens.Equality, Control.Lens
    SubstTypeLanguage.Haskell.TH.Lens
    substTypeLanguage.Haskell.TH.Lens
    substTypeVarsLanguage.Haskell.TH.Lens
    sumOfControl.Lens.Fold, Control.Lens
    SwappedControl.Lens.Iso, Control.Lens
    swappedControl.Lens.Iso, Control.Lens
    taintedDotControl.Lens.Internal.Setter, Control.Lens.Internal
    takingControl.Lens.Traversal, Control.Lens
    TakingWhile 
    1 (Type/Class)Control.Lens.Internal.Magma, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Magma, Control.Lens.Internal
    takingWhileControl.Lens.Fold, Control.Lens
    Tape 
    1 (Type/Class)Control.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Zipper
    teethControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    templateData.Data.Lens
    text 
    1 (Function)Data.Text.Strict.Lens
    2 (Function)Data.Text.Lazy.Lens
    3 (Function)Data.Text.Lens
    throughoutControl.Parallel.Strategies.Lens
    throwing 
    1 (Function)Control.Monad.Error.Lens
    2 (Function)Control.Exception.Lens
    throwingMControl.Exception.Lens
    throwingToControl.Exception.Lens
    tinplate 
    1 (Function)Data.Data.Lens
    2 (Function)GHC.Generics.Lens
    toControl.Lens.Getter, Control.Lens
    toListOfControl.Lens.Fold, Control.Lens
    toothControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    TopControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    toVectorOf 
    1 (Function)Data.Vector.Lens
    2 (Function)Data.Vector.Generic.Lens
    Track 
    1 (Type/Class)Control.Lens.Internal.Zipper
    2 (Data Constructor)Control.Lens.Internal.Zipper
    transformControl.Lens.Plated, Control.Lens
    transformMControl.Lens.Plated, Control.Lens
    transformMOfControl.Lens.Plated, Control.Lens
    transformMOnControl.Lens.Plated, Control.Lens
    transformMOnOfControl.Lens.Plated, Control.Lens
    transformOfControl.Lens.Plated, Control.Lens
    transformOnControl.Lens.Plated, Control.Lens
    transformOnOfControl.Lens.Plated, Control.Lens
    transposeOfControl.Lens.Traversal, Control.Lens
    TraversableControl.Lens.Traversal, Control.Lens
    TraversableWithIndexControl.Lens.Indexed, Control.Lens
    TraversalControl.Lens.Type, Control.Lens.Traversal, Control.Lens
    Traversal'Control.Lens.Type, Control.Lens.Traversal, Control.Lens
    traverseControl.Lens.Traversal, Control.Lens
    Traversed 
    1 (Type/Class)Control.Lens.Internal.Fold, Control.Lens.Internal, Control.Lens.Fold, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Fold, Control.Lens.Internal
    traversedControl.Lens.Traversal, Control.Lens
    traversed64Control.Lens.Traversal, Control.Lens
    traversedLazyControl.Lens.Internal.ByteString
    traversedLazy8Control.Lens.Internal.ByteString
    traversedStrictControl.Lens.Internal.ByteString
    traversedStrict8Control.Lens.Internal.ByteString
    traversedStrictTreeControl.Lens.Internal.ByteString
    traversedStrictTree8Control.Lens.Internal.ByteString
    TraverseMaxControl.Lens.Traversal, Control.Lens
    traverseMaxControl.Lens.Traversal, Control.Lens
    TraverseMinControl.Lens.Traversal, Control.Lens
    traverseMinControl.Lens.Traversal, Control.Lens
    traverseOfControl.Lens.Traversal, Control.Lens
    traverseOf_Control.Lens.Fold, Control.Lens
    TraversingControl.Lens.Traversal, Control.Lens
    Traversing'Control.Lens.Traversal, Control.Lens
    trying 
    1 (Function)Control.Monad.Error.Lens
    2 (Function)Control.Exception.Lens
    tugControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    tugsControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    tugToControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    TwoControl.Lens.Internal.Level, Control.Lens.Internal
    typeVarsLanguage.Haskell.TH.Lens
    typeVarsExLanguage.Haskell.TH.Lens
    unconsControl.Lens.Cons, Control.Lens
    uncurriedControl.Lens.Iso, Control.Lens
    underControl.Lens.Iso, Control.Lens
    unfocusingControl.Lens.Internal.Zoom, Control.Lens.Internal
    unfocusingErrControl.Lens.Internal.Zoom, Control.Lens.Internal
    unfocusingMayControl.Lens.Internal.Zoom, Control.Lens.Internal
    unfocusingOnControl.Lens.Internal.Zoom, Control.Lens.Internal
    unfocusingPlusControl.Lens.Internal.Zoom, Control.Lens.Internal
    unfocusingWithControl.Lens.Internal.Zoom, Control.Lens.Internal
    unfoldedControl.Lens.Fold, Control.Lens
    uniplateData.Data.Lens
    universeControl.Lens.Plated, Control.Lens
    universeOfControl.Lens.Plated, Control.Lens
    universeOnControl.Lens.Plated, Control.Lens
    universeOnOfControl.Lens.Plated, Control.Lens
    unpackLazyControl.Lens.Internal.ByteString
    unpackLazy8Control.Lens.Internal.ByteString
    unpackStrictControl.Lens.Internal.ByteString
    unpackStrict8Control.Lens.Internal.ByteString
    unsafelyRestoreTapeControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    unsafelyRestoreTrackControl.Lens.Internal.Zipper
    unsafePartsOfControl.Lens.Traversal, Control.Lens
    unsafePartsOf'Control.Lens.Traversal, Control.Lens
    unsafeSingularControl.Lens.Traversal, Control.Lens
    unsnocControl.Lens.Cons, Control.Lens
    untaintedControl.Lens.Internal.Setter, Control.Lens.Internal
    untaintedDotControl.Lens.Internal.Setter, Control.Lens.Internal
    untoControl.Lens.Review, Control.Lens
    unwrappedControl.Lens.Wrapped, Control.Lens
    unwrapped'Control.Lens.Wrapped, Control.Lens
    unwrappingControl.Lens.Wrapped, Control.Lens
    unwrappingsControl.Lens.Wrapped, Control.Lens
    uponData.Data.Lens
    upon'Data.Data.Lens
    upwardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    useControl.Lens.Getter, Control.Lens
    use'Control.Lens.Getter, Control.Lens
    usesControl.Lens.Getter, Control.Lens
    uses'Control.Lens.Getter, Control.Lens
    ValueControl.Lens.At, Control.Lens
    vector 
    1 (Function)Data.Vector.Lens
    2 (Function)Data.Vector.Generic.Lens
    viewControl.Lens.Getter, Control.Lens
    view'Control.Lens.Getter, Control.Lens
    viewLData.Sequence.Lens
    viewRData.Sequence.Lens
    viewsControl.Lens.Getter, Control.Lens
    views'Control.Lens.Getter, Control.Lens
    withinControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    withIndexControl.Lens.Indexed, Control.Lens
    withinsControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    withoutControl.Lens.Prism, Control.Lens
    wordingByData.List.Split.Lens
    WrappedControl.Lens.Wrapped, Control.Lens
    wrappedControl.Lens.Wrapped, Control.Lens
    wrapped'Control.Lens.Wrapped, Control.Lens
    wrappingControl.Lens.Wrapped, Control.Lens
    wrappingsControl.Lens.Wrapped, Control.Lens
    ZeroControl.Lens.Internal.Level, Control.Lens.Internal
    ZippedControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    Zipper 
    1 (Type/Class)Control.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Zipper
    zipperControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    ZippingControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    ZoomControl.Lens.Zoom, Control.Lens
    zoomControl.Lens.Zoom, Control.Lens
    ZoomedControl.Lens.Internal.Zoom, Control.Lens.Internal
    ^!Control.Lens.Action, Control.Lens.Operators, Control.Lens
    ^!!Control.Lens.Action, Control.Lens.Operators, Control.Lens
    ^!?Control.Lens.Action, Control.Lens.Operators, Control.Lens
    ^#Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    ^.Control.Lens.Getter, Control.Lens.Operators, Control.Lens
    ^..Control.Lens.Fold, Control.Lens.Operators, Control.Lens
    ^=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    ^?Control.Lens.Fold, Control.Lens.Operators, Control.Lens
    ^?!Control.Lens.Fold, Control.Lens.Operators, Control.Lens
    ^@!Control.Lens.Action, Control.Lens.Operators, Control.Lens
    ^@!!Control.Lens.Action, Control.Lens.Operators, Control.Lens
    ^@!?Control.Lens.Action, Control.Lens.Operators, Control.Lens
    ^@.Control.Lens.Getter, Control.Lens.Operators, Control.Lens
    ^@..Control.Lens.Fold, Control.Lens.Operators, Control.Lens
    ^@?Control.Lens.Fold, Control.Lens.Operators, Control.Lens
    ^@?!Control.Lens.Fold, Control.Lens.Operators, Control.Lens
    ^^=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    ^^~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    ^~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    _1Control.Lens.Tuple, Control.Lens
    _2Control.Lens.Tuple, Control.Lens
    _3Control.Lens.Tuple, Control.Lens
    _4Control.Lens.Tuple, Control.Lens
    _5Control.Lens.Tuple, Control.Lens
    _6Control.Lens.Tuple, Control.Lens
    _7Control.Lens.Tuple, Control.Lens
    _8Control.Lens.Tuple, Control.Lens
    _9Control.Lens.Tuple, Control.Lens
    _AlreadyExistsSystem.IO.Error.Lens
    _ArithExceptionControl.Exception.Lens
    _ArrayExceptionControl.Exception.Lens
    _AssertionFailedControl.Exception.Lens
    _AsyncExceptionControl.Exception.Lens
    _atControl.Lens.At, Control.Lens
    _BlockedIndefinitelyOnMVarControl.Exception.Lens
    _BlockedIndefinitelyOnSTMControl.Exception.Lens
    _castData.Typeable.Lens
    _conjugateData.Complex.Lens
    _ConsControl.Lens.Cons, Control.Lens
    _DeadlockControl.Exception.Lens
    _DenormalControl.Exception.Lens
    _DivideByZeroControl.Exception.Lens
    _DynamicData.Dynamic.Lens
    _EOFSystem.IO.Error.Lens
    _ErrorCallControl.Exception.Lens
    _ExitCodeSystem.Exit.Lens
    _ExitFailureSystem.Exit.Lens
    _ExitSuccessSystem.Exit.Lens
    _gcastData.Typeable.Lens
    _HardwareFaultSystem.IO.Error.Lens
    _headControl.Lens.Cons, Control.Lens
    _HeapOverflowControl.Exception.Lens
    _IllegalOperationSystem.IO.Error.Lens
    _imagPartData.Complex.Lens
    _InappropriateTypeSystem.IO.Error.Lens
    _IndexOutOfBoundsControl.Exception.Lens
    _initControl.Lens.Cons, Control.Lens
    _InterruptedSystem.IO.Error.Lens
    _InvalidArgumentSystem.IO.Error.Lens
    _IOExceptionControl.Exception.Lens
    _JustControl.Lens.Prism, Control.Lens
    _lastControl.Lens.Cons, Control.Lens
    _LeftControl.Lens.Prism, Control.Lens
    _LossOfPrecisionControl.Exception.Lens
    _magnitudeData.Complex.Lens
    _NestedAtomicallyControl.Exception.Lens
    _NoMethodErrorControl.Exception.Lens
    _NonTerminationControl.Exception.Lens
    _NoSuchThingSystem.IO.Error.Lens
    _OtherErrorSystem.IO.Error.Lens
    _OverflowControl.Exception.Lens
    _PatternMatchFailControl.Exception.Lens
    _PermissionDeniedSystem.IO.Error.Lens
    _phaseData.Complex.Lens
    _polarData.Complex.Lens
    _ProtocolErrorSystem.IO.Error.Lens
    _realPartData.Complex.Lens
    _RecConErrorControl.Exception.Lens
    _RecSelErrorControl.Exception.Lens
    _RecUpdErrorControl.Exception.Lens
    _ResourceBusySystem.IO.Error.Lens
    _ResourceExhaustedSystem.IO.Error.Lens
    _ResourceVanishedSystem.IO.Error.Lens
    _RightControl.Lens.Prism, Control.Lens
    _SnocControl.Lens.Cons, Control.Lens
    _StackOverflowControl.Exception.Lens
    _SystemErrorSystem.IO.Error.Lens
    _tailControl.Lens.Cons, Control.Lens
    _ThreadKilledControl.Exception.Lens
    _TimeExpiredSystem.IO.Error.Lens
    _UndefinedElementControl.Exception.Lens
    _UnderflowControl.Exception.Lens
    _UnsatisfiedConstraintsSystem.IO.Error.Lens
    _UnsupportedOperationSystem.IO.Error.Lens
    _UserErrorSystem.IO.Error.Lens
    _UserInterruptControl.Exception.Lens
    |>Control.Lens.Cons, Control.Lens.Operators, Control.Lens
    ||=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    ||~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    \ No newline at end of file +

    lens-3.8: Lenses, Folds and Traversals

    Index

    #%%=Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    #%%~Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    #%=Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    #%~Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    #=Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    #~Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    %%=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    %%@=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    %%@~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    %%~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    %=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    %@=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    %@~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    %~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    &Control.Lens.Combinators, Control.Lens.Operators, Control.Lens
    &&=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    &&~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    **=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    **~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    *=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    *~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    +=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    +~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    -=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    -~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    .&.=Data.Bits.Lens
    .&.~Data.Bits.Lens
    .=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    .>Control.Lens.Indexed, Control.Lens.Operators, Control.Lens
    .|.=Data.Bits.Lens
    .|.~Data.Bits.Lens
    .~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    //=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    //~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    :>Control.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens.Operators, Control.Lens
    :>>Control.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    :@Control.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    <#%=Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    <#%~Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    <#=Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    <#~Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    <%=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <%@=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <%@~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <%~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <&&=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <&&~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <&>Control.Lens.Combinators, Control.Lens.Operators, Control.Lens
    <**=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <**~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <*=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <*~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <+=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <+~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <-=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <-~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <.Control.Lens.Indexed, Control.Lens.Operators, Control.Lens
    <.&.=Data.Bits.Lens
    <.&.~Data.Bits.Lens
    <.=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    <.>Control.Lens.Indexed, Control.Lens.Operators, Control.Lens
    <.>=System.FilePath.Lens
    <.>~System.FilePath.Lens
    <.|.=Data.Bits.Lens
    <.|.~Data.Bits.Lens
    <.~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    <//=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <//~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    </>=System.FilePath.Lens
    </>~System.FilePath.Lens
    <<%=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <<%~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <<.=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <<.>=System.FilePath.Lens
    <<.>~System.FilePath.Lens
    <<.~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <</>=System.FilePath.Lens
    <</>~System.FilePath.Lens
    <<>=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <<>~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <<~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <>=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    <>~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    <?=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    <?~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    <^=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <^^=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <^^~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <^~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <|Control.Lens.Cons, Control.Lens.Operators, Control.Lens
    <||=Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <||~Control.Lens.Lens, Control.Lens.Operators, Control.Lens
    <~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    ?=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    ??Control.Lens.Combinators, Control.Lens.Operators, Control.Lens
    ?~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    AccessingControl.Lens.Getter, Control.Lens
    Accessor 
    1 (Type/Class)Control.Lens.Internal.Getter, Control.Lens.Internal, Control.Lens.Getter, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Getter, Control.Lens.Internal, Control.Lens.Getter, Control.Lens
    actControl.Lens.Action, Control.Lens
    ActingControl.Lens.Action, Control.Lens
    ActionControl.Lens.Type, Control.Lens.Action, Control.Lens
    actsControl.Lens.Action, Control.Lens
    afterControl.Parallel.Strategies.Lens
    alaControl.Lens.Wrapped, Control.Lens
    alafControl.Lens.Wrapped, Control.Lens
    ALensControl.Lens.Lens, Control.Lens
    ALens'Control.Lens.Lens, Control.Lens
    allOfControl.Lens.Fold, Control.Lens
    alongsideControl.Lens.Lens, Control.Lens
    andOfControl.Lens.Fold, Control.Lens
    AnEqualityControl.Lens.Equality, Control.Lens
    AnEquality'Control.Lens.Equality, Control.Lens
    AnIndexedLensControl.Lens.Lens, Control.Lens
    AnIndexedLens'Control.Lens.Lens, Control.Lens
    AnIndexedSetterControl.Lens.Setter, Control.Lens
    AnIndexedSetter'Control.Lens.Setter, Control.Lens
    AnIndexedTraversalControl.Lens.Traversal, Control.Lens
    AnIndexedTraversal'Control.Lens.Traversal, Control.Lens
    AnIsoControl.Lens.Iso, Control.Lens
    AnIso'Control.Lens.Iso, Control.Lens
    anonControl.Lens.Iso, Control.Lens
    anyOfControl.Lens.Fold, Control.Lens
    ApControl.Lens.Internal.Zipper
    ApLControl.Lens.Internal.Zipper
    ApRControl.Lens.Internal.Zipper
    APrismControl.Lens.Prism, Control.Lens
    APrism'Control.Lens.Prism, Control.Lens
    AReviewControl.Lens.Review, Control.Lens
    AReview'Control.Lens.Review, Control.Lens
    argumentControl.Lens.Setter, Control.Lens
    AsArithExceptionControl.Exception.Lens
    AsArrayExceptionControl.Exception.Lens
    AsAssertionFailedControl.Exception.Lens
    AsAsyncExceptionControl.Exception.Lens
    AsBlockedIndefinitelyOnMVarControl.Exception.Lens
    AsBlockedIndefinitelyOnSTMControl.Exception.Lens
    AsDeadlockControl.Exception.Lens
    AsDynamicData.Dynamic.Lens
    AsErrorCallControl.Exception.Lens
    ASetterControl.Lens.Setter, Control.Lens
    ASetter'Control.Lens.Setter, Control.Lens
    AsExitCodeSystem.Exit.Lens
    asideControl.Lens.Prism, Control.Lens
    asIndexControl.Lens.Indexed, Control.Lens
    AsIOExceptionControl.Exception.Lens
    AsNestedAtomicallyControl.Exception.Lens
    AsNoMethodErrorControl.Exception.Lens
    AsNonTerminationControl.Exception.Lens
    AsPatternMatchFailControl.Exception.Lens
    AsRecConErrorControl.Exception.Lens
    AsRecSelErrorControl.Exception.Lens
    AsRecUpdErrorControl.Exception.Lens
    assignControl.Lens.Setter, Control.Lens
    asStreamData.Vector.Generic.Lens
    asStreamRData.Vector.Generic.Lens
    asumOfControl.Lens.Fold, Control.Lens
    AtControl.Lens.At, Control.Lens
    atControl.Lens.At, Control.Lens
    ATraversalControl.Lens.Traversal, Control.Lens
    ATraversal'Control.Lens.Traversal, Control.Lens
    auControl.Lens.Iso, Control.Lens
    aufControl.Lens.Iso, Control.Lens
    backwardsControl.Lens.Fold, Control.Lens
    baseNumeric.Lens
    basenameSystem.FilePath.Lens
    Bazaar 
    1 (Type/Class)Control.Lens.Internal.Bazaar, Control.Lens.Internal, Control.Lens.Traversal, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Bazaar, Control.Lens.Internal, Control.Lens.Traversal, Control.Lens
    bazaarControl.Lens.Internal.Bazaar, Control.Lens.Internal
    Bazaar'Control.Lens.Internal.Bazaar, Control.Lens.Internal, Control.Lens.Traversal, Control.Lens
    BazaarT 
    1 (Type/Class)Control.Lens.Internal.Bazaar, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Bazaar, Control.Lens.Internal
    BazaarT'Control.Lens.Internal.Bazaar, Control.Lens.Internal
    BDControl.Lens.Internal.Deque
    besideControl.Lens.Traversal, Control.Lens
    biplateData.Data.Lens
    bitAtData.Bits.Lens
    bitsData.Bits.Lens
    BizarreControl.Lens.Internal.Bazaar, Control.Lens.Internal
    bothControl.Lens.Traversal, Control.Lens
    branchesData.Tree.Lens
    builder 
    1 (Function)Data.Text.Strict.Lens
    2 (Function)Data.Text.Lazy.Lens
    3 (Function)Data.Text.Lens
    BuildTraversalsControl.Lens.TH, Control.Lens
    buildTraversalsControl.Lens.TH, Control.Lens
    byteAtData.Bits.Lens
    bytes 
    1 (Function)Data.ByteString.Strict.Lens
    2 (Function)Data.ByteString.Lazy.Lens
    3 (Function)Data.ByteString.Lens
    catching 
    1 (Function)Control.Monad.Error.Lens
    2 (Function)Control.Exception.Lens
    catching_ 
    1 (Function)Control.Monad.Error.Lens
    2 (Function)Control.Exception.Lens
    censoringControl.Lens.Setter, Control.Lens
    chars 
    1 (Function)Data.ByteString.Strict.Lens
    2 (Function)Data.ByteString.Lazy.Lens
    3 (Function)Data.ByteString.Lens
    childrenControl.Lens.Plated, Control.Lens
    ChoiceControl.Lens.Prism, Control.Lens
    choosingControl.Lens.Lens, Control.Lens
    chosenControl.Lens.Lens, Control.Lens
    chunkingData.List.Split.Lens
    ClassRequiredControl.Lens.TH, Control.Lens
    classRequiredControl.Lens.TH, Control.Lens
    classyRulesControl.Lens.TH, Control.Lens
    clonedData.Vector.Generic.Lens
    cloneIndexedLensControl.Lens.Lens, Control.Lens
    cloneIndexedSetterControl.Lens.Setter, Control.Lens
    cloneIndexedTraversalControl.Lens.Traversal, Control.Lens
    cloneIndexPreservingLensControl.Lens.Lens, Control.Lens
    cloneIndexPreservingSetterControl.Lens.Setter, Control.Lens
    cloneIndexPreservingTraversalControl.Lens.Traversal, Control.Lens
    cloneIsoControl.Lens.Iso, Control.Lens
    cloneLensControl.Lens.Lens, Control.Lens
    clonePrismControl.Lens.Prism, Control.Lens
    cloneSetterControl.Lens.Setter, Control.Lens
    cloneTraversalControl.Lens.Traversal, Control.Lens
    coerceControl.Lens.Internal.Getter, Control.Lens.Internal, Control.Lens.Getter, Control.Lens
    Coil 
    1 (Type/Class)Control.Lens.Internal.Zipper
    2 (Data Constructor)Control.Lens.Internal.Zipper
    complexData.Complex.Lens
    composOpFoldControl.Lens.Plated, Control.Lens
    concatMapOfControl.Lens.Fold, Control.Lens
    concatOfControl.Lens.Fold, Control.Lens
    condensingData.List.Split.Lens
    conFieldsLanguage.Haskell.TH.Lens
    ConjoinedControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    conNamedFieldsLanguage.Haskell.TH.Lens
    ConsControl.Lens.Cons, Control.Lens
    consControl.Lens.Cons, Control.Lens
    ContainsControl.Lens.At, Control.Lens
    containsControl.Lens.At, Control.Lens
    containsAtControl.Lens.At, Control.Lens
    containsIxControl.Lens.At, Control.Lens
    containsLengthControl.Lens.At, Control.Lens
    containsLookupControl.Lens.At, Control.Lens
    containsNControl.Lens.At, Control.Lens
    containsTestControl.Lens.At, Control.Lens
    Context 
    1 (Type/Class)Control.Lens.Internal.Context, Control.Lens.Internal, Control.Lens.Lens, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Context, Control.Lens.Internal, Control.Lens.Lens, Control.Lens
    contextControl.Lens.Internal.Context, Control.Lens.Internal
    Context'Control.Lens.Internal.Context, Control.Lens.Internal, Control.Lens.Lens, Control.Lens
    contextsControl.Lens.Plated, Control.Lens
    contextsOfControl.Lens.Plated, Control.Lens
    contextsOnControl.Lens.Plated, Control.Lens
    contextsOnOfControl.Lens.Plated, Control.Lens
    contramappedControl.Lens.Setter, Control.Lens
    CreateClassControl.Lens.TH, Control.Lens
    createClassControl.Lens.TH, Control.Lens
    CreateInstanceControl.Lens.TH, Control.Lens
    createInstanceControl.Lens.TH, Control.Lens
    curriedControl.Lens.Iso, Control.Lens
    cycledControl.Lens.Fold, Control.Lens
    Deepening 
    1 (Type/Class)Control.Lens.Internal.Level, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Level, Control.Lens.Internal
    deepeningControl.Lens.Internal.Level, Control.Lens.Internal
    defaultRulesControl.Lens.TH, Control.Lens
    delimitersData.List.Split.Lens
    delimitingData.List.Split.Lens
    DequeControl.Lens.Internal.Deque
    descriptionSystem.IO.Error.Lens
    dimapControl.Lens.Iso, Control.Lens
    directorySystem.FilePath.Lens
    distribControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    downwardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    droppingControl.Lens.Traversal, Control.Lens
    droppingWhileControl.Lens.Fold, Control.Lens
    EachControl.Lens.Each, Control.Lens
    eachControl.Lens.Each, Control.Lens
    Effect 
    1 (Type/Class)Control.Lens.Internal.Action, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Action, Control.Lens.Internal
    EffectiveControl.Lens.Internal.Action, Control.Lens.Internal, Control.Lens.Action, Control.Lens
    effectiveControl.Lens.Internal.Action, Control.Lens.Internal
    EffectRWS 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    elementControl.Lens.Traversal, Control.Lens
    elementOfControl.Lens.Traversal, Control.Lens
    elementsControl.Lens.Traversal, Control.Lens
    elementsOfControl.Lens.Traversal, Control.Lens
    elemOfControl.Lens.Fold, Control.Lens
    endingByData.List.Split.Lens
    endingByOneOfData.List.Split.Lens
    enumControl.Lens.Iso, Control.Lens
    EqualityControl.Lens.Type, Control.Lens.Equality, Control.Lens
    Equality'Control.Lens.Type, Control.Lens.Equality, Control.Lens
    Err 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    errnoSystem.IO.Error.Lens
    errorTypeSystem.IO.Error.Lens
    evalOfControl.Parallel.Strategies.Lens
    exceptionControl.Exception.Lens
    Exchange 
    1 (Type/Class)Control.Lens.Internal.Iso, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Iso, Control.Lens.Internal
    extensionSystem.FilePath.Lens
    farthestControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    Field1Control.Lens.Tuple, Control.Lens
    Field2Control.Lens.Tuple, Control.Lens
    Field3Control.Lens.Tuple, Control.Lens
    Field4Control.Lens.Tuple, Control.Lens
    Field5Control.Lens.Tuple, Control.Lens
    Field6Control.Lens.Tuple, Control.Lens
    Field7Control.Lens.Tuple, Control.Lens
    Field8Control.Lens.Tuple, Control.Lens
    Field9Control.Lens.Tuple, Control.Lens
    fileNameSystem.IO.Error.Lens
    filenameSystem.FilePath.Lens
    filteredControl.Lens.Fold, Control.Lens
    findOfControl.Lens.Fold, Control.Lens
    firstOfControl.Lens.Fold, Control.Lens
    flippedControl.Lens.Iso, Control.Lens
    Flow 
    1 (Type/Class)Control.Lens.Internal.Zipper
    2 (Data Constructor)Control.Lens.Internal.Zipper
    Flows 
    1 (Type/Class)Control.Lens.Internal.Level, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Level, Control.Lens.Internal
    focalPointControl.Lens.Internal.Zipper
    focusControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    focusedContextControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    Focusing 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingErr 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingMay 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingOn 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingPlus 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingWith 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FoldControl.Lens.Type, Control.Lens.Fold, Control.Lens
    FoldableWithIndexControl.Lens.Indexed, Control.Lens
    foldedControl.Lens.Fold, Control.Lens
    Folding 
    1 (Type/Class)Control.Lens.Internal.Fold, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Fold, Control.Lens.Internal
    foldingControl.Lens.Fold, Control.Lens
    foldl1OfControl.Lens.Fold, Control.Lens
    foldl1Of'Control.Lens.Fold, Control.Lens
    foldlMOfControl.Lens.Fold, Control.Lens
    foldlOfControl.Lens.Fold, Control.Lens
    foldlOf'Control.Lens.Fold, Control.Lens
    foldMapOfControl.Lens.Fold, Control.Lens
    foldOfControl.Lens.Fold, Control.Lens
    foldr1OfControl.Lens.Fold, Control.Lens
    foldr1Of'Control.Lens.Fold, Control.Lens
    foldrMOfControl.Lens.Fold, Control.Lens
    foldrOfControl.Lens.Fold, Control.Lens
    foldrOf'Control.Lens.Fold, Control.Lens
    forced 
    1 (Function)Data.Vector.Lens
    2 (Function)Data.Vector.Generic.Lens
    ForkControl.Lens.Internal.Zipper
    forMOfControl.Lens.Traversal, Control.Lens
    forMOf_Control.Lens.Fold, Control.Lens
    forOfControl.Lens.Traversal, Control.Lens
    forOf_Control.Lens.Fold, Control.Lens
    fromControl.Lens.Iso, Control.Lens
    fromEqControl.Lens.Equality, Control.Lens
    fromListControl.Lens.Internal.Deque
    fromWithinControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    FunctorWithIndexControl.Lens.Indexed, Control.Lens
    GenerateSignaturesControl.Lens.TH, Control.Lens
    generateSignaturesControl.Lens.TH, Control.Lens
    genericGHC.Generics.Lens
    generic1GHC.Generics.Lens
    getEffectControl.Lens.Internal.Action, Control.Lens.Internal
    getEffectRWSControl.Lens.Internal.Zoom, Control.Lens.Internal
    getErrControl.Lens.Internal.Zoom, Control.Lens.Internal
    getFoldingControl.Lens.Internal.Fold, Control.Lens.Internal
    getLeftmostControl.Lens.Internal.Fold, Control.Lens.Internal
    getMaxControl.Lens.Internal.Fold, Control.Lens.Internal
    getMayControl.Lens.Internal.Zoom, Control.Lens.Internal
    getMinControl.Lens.Internal.Fold, Control.Lens.Internal
    getRightmostControl.Lens.Internal.Fold, Control.Lens.Internal
    getSequencedControl.Lens.Internal.Fold, Control.Lens.Internal
    GettableControl.Lens.Internal.Getter, Control.Lens.Internal, Control.Lens.Getter, Control.Lens
    GetterControl.Lens.Type, Control.Lens.Getter, Control.Lens
    GettingControl.Lens.Getter, Control.Lens
    getTraversedControl.Lens.Internal.Fold, Control.Lens.Internal
    GTraversalGHC.Generics.Lens
    gtraverseData.Data.Lens
    handleSystem.IO.Error.Lens
    HandleSingletonsControl.Lens.TH, Control.Lens
    handleSingletonsControl.Lens.TH, Control.Lens
    handling 
    1 (Function)Control.Monad.Error.Lens
    2 (Function)Control.Exception.Lens
    handling_ 
    1 (Function)Control.Monad.Error.Lens
    2 (Function)Control.Exception.Lens
    hasControl.Lens.Fold, Control.Lens
    hasn'tControl.Lens.Fold, Control.Lens
    HasNameLanguage.Haskell.TH.Lens
    HasTypeVarsLanguage.Haskell.TH.Lens
    headOfControl.Lens.Fold, Control.Lens
    holesControl.Lens.Plated, Control.Lens
    holesOfControl.Lens.Traversal, Control.Lens
    holesOnControl.Lens.Plated, Control.Lens
    holesOnOfControl.Lens.Plated, Control.Lens
    iactControl.Lens.Action, Control.Lens
    iallControl.Lens.Indexed, Control.Lens
    iallOfControl.Lens.Fold, Control.Lens
    ianyControl.Lens.Indexed, Control.Lens
    ianyOfControl.Lens.Fold, Control.Lens
    icensoringControl.Lens.Setter, Control.Lens
    icomposeControl.Lens.Indexed, Control.Lens
    iconcatMapControl.Lens.Indexed, Control.Lens
    iconcatMapOfControl.Lens.Fold, Control.Lens
    Identical 
    1 (Type/Class)Control.Lens.Equality, Control.Lens
    2 (Data Constructor)Control.Lens.Equality, Control.Lens
    idownwardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    idroppingWhileControl.Lens.Fold, Control.Lens
    iduplicateControl.Lens.Internal.Context, Control.Lens.Internal
    iexperimentControl.Lens.Internal.Context, Control.Lens.Internal
    iextendControl.Lens.Internal.Context, Control.Lens.Internal
    iextractControl.Lens.Internal.Context, Control.Lens.Internal
    ifilteredControl.Lens.Fold, Control.Lens
    ifindControl.Lens.Indexed, Control.Lens
    ifindOfControl.Lens.Fold, Control.Lens
    ifmapControl.Lens.Internal.Context, Control.Lens.Internal
    ifoldedControl.Lens.Indexed, Control.Lens
    ifoldingControl.Lens.Indexed, Control.Lens
    ifoldlControl.Lens.Indexed, Control.Lens
    ifoldl'Control.Lens.Indexed, Control.Lens
    ifoldlMControl.Lens.Indexed, Control.Lens
    ifoldlMOfControl.Lens.Fold, Control.Lens
    ifoldlOfControl.Lens.Fold, Control.Lens
    ifoldlOf'Control.Lens.Fold, Control.Lens
    ifoldMapControl.Lens.Indexed, Control.Lens
    ifoldMapOfControl.Lens.Fold, Control.Lens
    ifoldrControl.Lens.Indexed, Control.Lens
    ifoldr'Control.Lens.Indexed, Control.Lens
    ifoldrMControl.Lens.Indexed, Control.Lens
    ifoldrMOfControl.Lens.Fold, Control.Lens
    ifoldrOfControl.Lens.Fold, Control.Lens
    ifoldrOf'Control.Lens.Fold, Control.Lens
    iforControl.Lens.Indexed, Control.Lens
    iforMControl.Lens.Indexed, Control.Lens
    iforMOfControl.Lens.Traversal, Control.Lens
    iforMOf_Control.Lens.Fold, Control.Lens
    iforM_Control.Lens.Indexed, Control.Lens
    iforOfControl.Lens.Traversal, Control.Lens
    iforOf_Control.Lens.Fold, Control.Lens
    ifor_Control.Lens.Indexed, Control.Lens
    ifromWithinControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    ignoredControl.Lens.Traversal, Control.Lens
    ilensControl.Lens.Lens, Control.Lens
    ilevelsControl.Lens.Level, Control.Lens
    ilisteningControl.Lens.Getter, Control.Lens
    ilisteningsControl.Lens.Getter, Control.Lens
    imagmaControl.Lens.Iso, Control.Lens
    imapControl.Lens.Indexed, Control.Lens
    imapAccumLControl.Lens.Indexed, Control.Lens
    imapAccumLOfControl.Lens.Traversal, Control.Lens
    imapAccumRControl.Lens.Indexed, Control.Lens
    imapAccumROfControl.Lens.Traversal, Control.Lens
    imapMControl.Lens.Indexed, Control.Lens
    imapMOfControl.Lens.Traversal, Control.Lens
    imapMOf_Control.Lens.Fold, Control.Lens
    imapM_Control.Lens.Indexed, Control.Lens
    imapOfControl.Lens.Setter, Control.Lens
    imappedControl.Lens.Indexed, Control.Lens
    IndexControl.Lens.Each, Control.Lens
    indexControl.Lens.Indexed, Control.Lens
    IndexableControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    Indexed 
    1 (Type/Class)Control.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    indexedControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    IndexedActingControl.Lens.Action, Control.Lens
    IndexedActionControl.Lens.Type, Control.Lens.Action, Control.Lens
    IndexedComonadControl.Lens.Internal.Context, Control.Lens.Internal
    IndexedComonadStoreControl.Lens.Internal.Context, Control.Lens.Internal
    IndexedFoldControl.Lens.Type, Control.Lens.Fold, Control.Lens
    IndexedFunctorControl.Lens.Internal.Context, Control.Lens.Internal
    IndexedGetterControl.Lens.Type, Control.Lens.Getter, Control.Lens
    IndexedGettingControl.Lens.Getter, Control.Lens
    IndexedLensControl.Lens.Type, Control.Lens.Lens, Control.Lens
    IndexedLens'Control.Lens.Type, Control.Lens.Lens, Control.Lens
    IndexedLensLikeControl.Lens.Type, Control.Lens
    IndexedLensLike'Control.Lens.Type, Control.Lens
    IndexedMonadicFoldControl.Lens.Type, Control.Lens.Action, Control.Lens
    IndexedSetterControl.Lens.Type, Control.Lens.Setter, Control.Lens
    IndexedSetter'Control.Lens.Type, Control.Lens.Setter, Control.Lens
    IndexedTraversalControl.Lens.Type, Control.Lens.Traversal, Control.Lens
    IndexedTraversal'Control.Lens.Type, Control.Lens.Traversal, Control.Lens
    Indexing 
    1 (Type/Class)Control.Lens.Internal.Indexed, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Indexed, Control.Lens.Internal
    indexingControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    Indexing64 
    1 (Type/Class)Control.Lens.Internal.Indexed, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Indexed, Control.Lens.Internal
    indexing64Control.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    IndexPreservingActionControl.Lens.Type, Control.Lens
    IndexPreservingFoldControl.Lens.Type, Control.Lens
    IndexPreservingGetterControl.Lens.Type, Control.Lens
    IndexPreservingLensControl.Lens.Type, Control.Lens
    IndexPreservingLens'Control.Lens.Type, Control.Lens
    IndexPreservingMonadicFoldControl.Lens.Type, Control.Lens
    IndexPreservingSetterControl.Lens.Type, Control.Lens
    IndexPreservingSetter'Control.Lens.Type, Control.Lens
    IndexPreservingTraversalControl.Lens.Type, Control.Lens
    IndexPreservingTraversal'Control.Lens.Type, Control.Lens
    indicesControl.Lens.Indexed, Control.Lens
    ineffectiveControl.Lens.Internal.Action, Control.Lens.Internal
    insideControl.Lens.Lens, Control.Lens
    integralNumeric.Lens
    ioverControl.Lens.Setter, Control.Lens
    ipartsOfControl.Lens.Traversal, Control.Lens
    ipartsOf'Control.Lens.Traversal, Control.Lens
    ipassingControl.Lens.Setter, Control.Lens
    ipeekControl.Lens.Internal.Context, Control.Lens.Internal
    ipeeksControl.Lens.Internal.Context, Control.Lens.Internal
    iperformControl.Lens.Action, Control.Lens
    iperformsControl.Lens.Action, Control.Lens
    iplensControl.Lens.Lens, Control.Lens
    iposControl.Lens.Internal.Context, Control.Lens.Internal
    ipreControl.Lens.Fold, Control.Lens
    ipreuseControl.Lens.Fold, Control.Lens
    ipreusesControl.Lens.Fold, Control.Lens
    ipreviewControl.Lens.Fold, Control.Lens
    ipreviewsControl.Lens.Fold, Control.Lens
    IsByteStringData.ByteString.Lens
    iseekControl.Lens.Internal.Context, Control.Lens.Internal
    iseeksControl.Lens.Internal.Context, Control.Lens.Internal
    isetsControl.Lens.Setter, Control.Lens
    isn'tControl.Lens.Prism, Control.Lens
    IsoControl.Lens.Type, Control.Lens.Iso, Control.Lens
    isoControl.Lens.Iso, Control.Lens
    Iso'Control.Lens.Type, Control.Lens.Iso, Control.Lens
    isoRulesControl.Lens.TH, Control.Lens
    IsTextData.Text.Lens
    itakingWhileControl.Lens.Fold, Control.Lens
    iteratedControl.Lens.Fold, Control.Lens
    itoListControl.Lens.Indexed, Control.Lens
    itoListOfControl.Lens.Fold, Control.Lens
    itraverseControl.Lens.Indexed, Control.Lens
    itraversedControl.Lens.Indexed, Control.Lens
    itraverseOfControl.Lens.Traversal, Control.Lens
    itraverseOf_Control.Lens.Fold, Control.Lens
    itraverse_Control.Lens.Indexed, Control.Lens
    iunsafePartsOfControl.Lens.Traversal, Control.Lens
    iunsafePartsOf'Control.Lens.Traversal, Control.Lens
    iuseControl.Lens.Getter, Control.Lens
    iusesControl.Lens.Getter, Control.Lens
    iviewControl.Lens.Getter, Control.Lens
    iviewsControl.Lens.Getter, Control.Lens
    iwithinControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    iwithinsControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    ixControl.Lens.At, Control.Lens
    ixAtControl.Lens.At, Control.Lens
    ixEachControl.Lens.At, Control.Lens
    IxedControl.Lens.At, Control.Lens
    ixmappedData.Array.Lens
    IxValueControl.Lens.At, Control.Lens
    JacketControl.Lens.Internal.Zipper
    jacketControl.Lens.Internal.Zipper
    jacketInsControl.Lens.Internal.Zipper
    jacketOutsControl.Lens.Internal.Zipper
    jerksControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    jerkToControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    keepFinalBlanksData.List.Split.Lens
    keepInitialBlanksData.List.Split.Lens
    lastOfControl.Lens.Fold, Control.Lens
    LeafControl.Lens.Internal.Zipper
    leafControl.Lens.Internal.Magma, Control.Lens.Internal
    left'Control.Lens.Prism, Control.Lens
    LeftmostControl.Lens.Internal.Fold, Control.Lens.Internal, Control.Lens.Fold, Control.Lens
    leftmostControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    leftwardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    lengthOfControl.Lens.Fold, Control.Lens
    LensControl.Lens.Type, Control.Lens.Lens, Control.Lens
    lensControl.Lens.Lens, Control.Lens
    Lens'Control.Lens.Type, Control.Lens.Lens, Control.Lens
    lensClassControl.Lens.TH, Control.Lens
    lensedControl.Lens.Internal.Zipper
    lensFieldControl.Lens.TH, Control.Lens
    LensFlagControl.Lens.TH, Control.Lens
    lensFlagsControl.Lens.TH, Control.Lens
    lensIsoControl.Lens.TH, Control.Lens
    LensLikeControl.Lens.Type, Control.Lens
    LensLike'Control.Lens.Type, Control.Lens
    LensRules 
    1 (Type/Class)Control.Lens.TH, Control.Lens
    2 (Data Constructor)Control.Lens.TH, Control.Lens
    lensRulesControl.Lens.TH, Control.Lens
    LevelControl.Lens.Internal.Level, Control.Lens.Internal, Control.Lens.Level, Control.Lens
    levelsControl.Lens.Level, Control.Lens
    liftActControl.Lens.Action, Control.Lens
    liftedControl.Lens.Setter, Control.Lens
    liningByData.List.Split.Lens
    listeningControl.Lens.Getter, Control.Lens
    listeningsControl.Lens.Getter, Control.Lens
    LLeafControl.Lens.Internal.Fold, Control.Lens.Internal
    lmapControl.Lens.Iso, Control.Lens
    locationSystem.IO.Error.Lens
    lociControl.Lens.Traversal, Control.Lens
    locusControl.Lens.Lens, Control.Lens
    LoupeControl.Lens.Loupe, Control.Lens
    LPureControl.Lens.Internal.Fold, Control.Lens.Internal
    LStepControl.Lens.Internal.Fold, Control.Lens.Internal
    Mafic 
    1 (Type/Class)Control.Lens.Internal.Magma, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Magma, Control.Lens.Internal
    MagmaControl.Lens.Internal.Magma, Control.Lens.Internal, Control.Lens.Iso, Control.Lens
    magmaControl.Lens.Iso, Control.Lens
    MagmaApControl.Lens.Internal.Magma, Control.Lens.Internal
    MagmaFmapControl.Lens.Internal.Magma, Control.Lens.Internal
    MagmaLeafControl.Lens.Internal.Magma, Control.Lens.Internal
    MagmaPureControl.Lens.Internal.Magma, Control.Lens.Internal
    MagnifiedControl.Lens.Internal.Zoom, Control.Lens.Internal
    MagnifyControl.Lens.Zoom, Control.Lens
    magnifyControl.Lens.Zoom, Control.Lens
    makeClassyControl.Lens.TH, Control.Lens
    makeClassyForControl.Lens.TH, Control.Lens
    makeIsoControl.Lens.TH, Control.Lens
    makeLensesControl.Lens.TH, Control.Lens
    makeLensesForControl.Lens.TH, Control.Lens
    makeLensesWithControl.Lens.TH, Control.Lens
    makePrismsControl.Lens.TH, Control.Lens
    makeWrappedControl.Lens.TH, Control.Lens
    mapAccumLOfControl.Lens.Traversal, Control.Lens
    mapAccumROfControl.Lens.Traversal, Control.Lens
    mapEqControl.Lens.Equality, Control.Lens
    mapMOfControl.Lens.Traversal, Control.Lens
    mapMOf_Control.Lens.Fold, Control.Lens
    mapOfControl.Lens.Setter, Control.Lens
    mappedControl.Lens.Setter, Control.Lens
    mappingControl.Lens.Iso, Control.Lens
    Market 
    1 (Type/Class)Control.Lens.Internal.Prism, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Prism, Control.Lens.Internal
    Market'Control.Lens.Internal.Prism, Control.Lens.Internal
    Max 
    1 (Type/Class)Control.Lens.Internal.Fold, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Fold, Control.Lens.Internal
    maximalControl.Lens.Internal.Zipper
    maximumByOfControl.Lens.Fold, Control.Lens
    maximumOfControl.Lens.Fold, Control.Lens
    May 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    membersData.IntSet.Lens
    Min 
    1 (Type/Class)Control.Lens.Internal.Fold, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Fold, Control.Lens.Internal
    minimumByOfControl.Lens.Fold, Control.Lens
    minimumOfControl.Lens.Fold, Control.Lens
    Molten 
    1 (Type/Class)Control.Lens.Internal.Magma, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Magma, Control.Lens.Internal
    MonadicFoldControl.Lens.Type, Control.Lens.Action, Control.Lens
    movelControl.Lens.Internal.Zipper
    moverControl.Lens.Internal.Zipper
    moveToControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    moveTowardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    msumOfControl.Lens.Fold, Control.Lens
    Mutator 
    1 (Type/Class)Control.Lens.Internal.Setter, Control.Lens.Internal, Control.Lens.Setter, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Setter, Control.Lens.Internal
    nameLanguage.Haskell.TH.Lens
    noEffectControl.Lens.Internal.Getter, Control.Lens.Internal
    NoMaxControl.Lens.Internal.Fold, Control.Lens.Internal
    NoMinControl.Lens.Internal.Fold, Control.Lens.Internal
    nonControl.Lens.Iso, Control.Lens
    notElemOfControl.Lens.Fold, Control.Lens
    notNullOfControl.Lens.Fold, Control.Lens
    nullControl.Lens.Internal.Deque
    nullLeftControl.Lens.Internal.Zipper
    nullOfControl.Lens.Fold, Control.Lens
    nullRightControl.Lens.Internal.Zipper
    offsetControl.Lens.Internal.Zipper
    onceUponData.Data.Lens
    onceUpon'Data.Data.Lens
    OneControl.Lens.Internal.Level, Control.Lens.Internal
    opControl.Lens.Wrapped, Control.Lens
    ordinals 
    1 (Function)Data.Vector.Lens
    2 (Function)Data.Vector.Generic.Lens
    orOfControl.Lens.Fold, Control.Lens
    outsideControl.Lens.Prism, Control.Lens
    OverControl.Lens.Type, Control.Lens
    overControl.Lens.Setter, Control.Lens
    Over'Control.Lens.Type, Control.Lens
    OverloadedControl.Lens.Type, Control.Lens
    Overloaded'Control.Lens.Type, Control.Lens
    OverloadingControl.Lens.Type, Control.Lens
    Overloading'Control.Lens.Type, Control.Lens
    packed 
    1 (Function)Data.Text.Strict.Lens
    2 (Function)Data.Text.Lazy.Lens
    3 (Function)Data.Text.Lens
    packedBytes 
    1 (Function)Data.ByteString.Strict.Lens
    2 (Function)Data.ByteString.Lazy.Lens
    3 (Function)Data.ByteString.Lens
    packedChars 
    1 (Function)Data.ByteString.Strict.Lens
    2 (Function)Data.ByteString.Lazy.Lens
    3 (Function)Data.ByteString.Lens
    paraControl.Lens.Plated, Control.Lens
    paraOfControl.Lens.Plated, Control.Lens
    parOfControl.Parallel.Strategies.Lens
    PartialLensesControl.Lens.TH, Control.Lens
    partialLensesControl.Lens.TH, Control.Lens
    partsControl.Lens.Plated, Control.Lens
    partsOfControl.Lens.Traversal, Control.Lens
    partsOf'Control.Lens.Traversal, Control.Lens
    passingControl.Lens.Setter, Control.Lens
    PathControl.Lens.Internal.Zipper
    pathsizeControl.Lens.Internal.Zipper
    peelControl.Lens.Internal.Zipper
    performControl.Lens.Action, Control.Lens
    performsControl.Lens.Action, Control.Lens
    plateControl.Lens.Plated, Control.Lens
    PlatedControl.Lens.Plated, Control.Lens
    preControl.Lens.Fold, Control.Lens
    Pretext 
    1 (Type/Class)Control.Lens.Internal.Context, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Context, Control.Lens.Internal
    Pretext'Control.Lens.Internal.Context, Control.Lens.Internal
    PretextT 
    1 (Type/Class)Control.Lens.Internal.Context, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Context, Control.Lens.Internal
    PretextT'Control.Lens.Internal.Context, Control.Lens.Internal
    preuseControl.Lens.Fold, Control.Lens
    preusesControl.Lens.Fold, Control.Lens
    previewControl.Lens.Fold, Control.Lens
    previewsControl.Lens.Fold, Control.Lens
    PrismControl.Lens.Type, Control.Lens.Prism, Control.Lens
    prismControl.Lens.Prism, Control.Lens
    Prism'Control.Lens.Type, Control.Lens.Prism, Control.Lens
    prism'Control.Lens.Prism, Control.Lens
    productOfControl.Lens.Fold, Control.Lens
    ProfunctorControl.Lens.Iso, Control.Lens
    PureControl.Lens.Internal.Zipper
    reControl.Lens.Review, Control.Lens
    recoilControl.Lens.Internal.Zipper
    recompressControl.Lens.Internal.Zipper
    reflectFoldControl.Lens.Reified, Control.Lens
    reflectGetterControl.Lens.Reified, Control.Lens
    reflectIndexedGetterControl.Lens.Reified, Control.Lens
    reflectIndexedLensControl.Lens.Reified, Control.Lens
    reflectIndexedSetterControl.Lens.Reified, Control.Lens
    reflectIndexedTraversalControl.Lens.Reified, Control.Lens
    reflectIsoControl.Lens.Reified, Control.Lens
    reflectLensControl.Lens.Reified, Control.Lens
    reflectPrismControl.Lens.Reified, Control.Lens
    reflectSetterControl.Lens.Reified, Control.Lens
    reflectTraversalControl.Lens.Reified, Control.Lens
    ReifiedFoldControl.Lens.Reified, Control.Lens
    ReifiedGetterControl.Lens.Reified, Control.Lens
    ReifiedIndexedGetterControl.Lens.Reified, Control.Lens
    ReifiedIndexedLensControl.Lens.Reified, Control.Lens
    ReifiedIndexedLens'Control.Lens.Reified, Control.Lens
    ReifiedIndexedSetterControl.Lens.Reified, Control.Lens
    ReifiedIndexedSetter'Control.Lens.Reified, Control.Lens
    ReifiedIndexedTraversalControl.Lens.Reified, Control.Lens
    ReifiedIndexedTraversal'Control.Lens.Reified, Control.Lens
    ReifiedIsoControl.Lens.Reified, Control.Lens
    ReifiedIso'Control.Lens.Reified, Control.Lens
    ReifiedLensControl.Lens.Reified, Control.Lens
    ReifiedLens'Control.Lens.Reified, Control.Lens
    ReifiedPrismControl.Lens.Reified, Control.Lens
    ReifiedPrism'Control.Lens.Reified, Control.Lens
    ReifiedSetterControl.Lens.Reified, Control.Lens
    ReifiedSetter'Control.Lens.Reified, Control.Lens
    ReifiedTraversalControl.Lens.Reified, Control.Lens
    ReifiedTraversal'Control.Lens.Reified, Control.Lens
    ReifyFoldControl.Lens.Reified, Control.Lens
    ReifyGetterControl.Lens.Reified, Control.Lens
    ReifyIndexedGetterControl.Lens.Reified, Control.Lens
    ReifyIndexedLensControl.Lens.Reified, Control.Lens
    ReifyIndexedSetterControl.Lens.Reified, Control.Lens
    ReifyIndexedTraversalControl.Lens.Reified, Control.Lens
    ReifyIsoControl.Lens.Reified, Control.Lens
    ReifyLensControl.Lens.Reified, Control.Lens
    ReifyPrismControl.Lens.Reified, Control.Lens
    ReifySetterControl.Lens.Reified, Control.Lens
    ReifyTraversalControl.Lens.Reified, Control.Lens
    reindexedControl.Lens.Indexed, Control.Lens
    repeatedControl.Lens.Fold, Control.Lens
    replicatedControl.Lens.Fold, Control.Lens
    restoreNearTapeControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    restoreNearTrackControl.Lens.Internal.Zipper
    restoreTapeControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    restoreTrackControl.Lens.Internal.Zipper
    resultAtControl.Lens.At, Control.Lens
    retaggedControl.Lens.Internal.Review, Control.Lens.Internal, Control.Lens.Review, Control.Lens
    reuseControl.Lens.Review, Control.Lens
    reusesControl.Lens.Review, Control.Lens
    reversed 
    1 (Function)Data.Vector.Lens
    2 (Function)Data.Vector.Generic.Lens
    ReviewControl.Lens.Review, Control.Lens
    reviewControl.Lens.Review, Control.Lens
    Review'Control.Lens.Review, Control.Lens
    ReviewableControl.Lens.Internal.Review, Control.Lens.Internal, Control.Lens.Review, Control.Lens
    Reviewed 
    1 (Type/Class)Control.Lens.Internal.Review, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Review, Control.Lens.Internal
    reviewsControl.Lens.Review, Control.Lens
    rewriteControl.Lens.Plated, Control.Lens
    rewriteMControl.Lens.Plated, Control.Lens
    rewriteMOfControl.Lens.Plated, Control.Lens
    rewriteMOnControl.Lens.Plated, Control.Lens
    rewriteMOnOfControl.Lens.Plated, Control.Lens
    rewriteOfControl.Lens.Plated, Control.Lens
    rewriteOnControl.Lens.Plated, Control.Lens
    rewriteOnOfControl.Lens.Plated, Control.Lens
    rezipControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    right'Control.Lens.Prism, Control.Lens
    RightmostControl.Lens.Internal.Fold, Control.Lens.Internal, Control.Lens.Fold, Control.Lens
    rightmostControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    rightwardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    RLeafControl.Lens.Internal.Fold, Control.Lens.Internal
    rmapControl.Lens.Iso, Control.Lens
    rootData.Tree.Lens
    RPureControl.Lens.Internal.Fold, Control.Lens.Internal
    RStepControl.Lens.Internal.Fold, Control.Lens.Internal
    runAccessorControl.Lens.Internal.Getter, Control.Lens.Internal, Control.Lens.Getter, Control.Lens
    runBazaarControl.Lens.Internal.Bazaar, Control.Lens.Internal, Control.Lens.Traversal, Control.Lens
    runBazaarTControl.Lens.Internal.Bazaar, Control.Lens.Internal
    runDeepeningControl.Lens.Internal.Level, Control.Lens.Internal
    runEqControl.Lens.Equality, Control.Lens
    runFlowControl.Lens.Internal.Zipper
    runFlowsControl.Lens.Internal.Level, Control.Lens.Internal
    runIndexedControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    runIndexingControl.Lens.Internal.Indexed, Control.Lens.Internal
    runIndexing64Control.Lens.Internal.Indexed, Control.Lens.Internal
    runMaficControl.Lens.Internal.Magma, Control.Lens.Internal
    runMagmaControl.Lens.Internal.Magma, Control.Lens.Internal
    runMoltenControl.Lens.Internal.Magma, Control.Lens.Internal
    runMutatorControl.Lens.Internal.Setter, Control.Lens.Internal
    runPretextControl.Lens.Internal.Context, Control.Lens.Internal
    runPretextTControl.Lens.Internal.Context, Control.Lens.Internal
    runReviewedControl.Lens.Internal.Review, Control.Lens.Internal
    runTakingWhileControl.Lens.Internal.Magma, Control.Lens.Internal
    saveTapeControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    scanl1OfControl.Lens.Traversal, Control.Lens
    scanr1OfControl.Lens.Traversal, Control.Lens
    scribeControl.Lens.Setter, Control.Lens
    sellControl.Lens.Internal.Context, Control.Lens.Internal
    SellableControl.Lens.Internal.Context, Control.Lens.Internal
    seqOfControl.Seq.Lens
    sequenceAOfControl.Lens.Traversal, Control.Lens
    sequenceAOf_Control.Lens.Fold, Control.Lens
    Sequenced 
    1 (Type/Class)Control.Lens.Internal.Fold, Control.Lens.Internal, Control.Lens.Fold, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Fold, Control.Lens.Internal
    sequenceOfControl.Lens.Traversal, Control.Lens
    sequenceOf_Control.Lens.Fold, Control.Lens
    setControl.Lens.Setter, Control.Lens
    set'Control.Lens.Setter, Control.Lens
    setmapped 
    1 (Function)Data.Set.Lens
    2 (Function)Data.HashSet.Lens
    3 (Function)Data.IntSet.Lens
    setOf 
    1 (Function)Data.Set.Lens
    2 (Function)Data.HashSet.Lens
    3 (Function)Data.IntSet.Lens
    setsControl.Lens.Setter, Control.Lens
    SettableControl.Lens.Internal.Setter, Control.Lens.Internal, Control.Lens.Setter, Control.Lens
    SetterControl.Lens.Type, Control.Lens.Setter, Control.Lens
    Setter'Control.Lens.Type, Control.Lens.Setter, Control.Lens
    SettingControl.Lens.Setter, Control.Lens
    settingControl.Lens.Setter, Control.Lens
    Setting'Control.Lens.Setter, Control.Lens
    SimpleControl.Lens.Type, Control.Lens
    simpleControl.Lens.Iso, Control.Lens
    SimpleIndexedSetterControl.Lens.Simple, Control.Lens
    SimpleIndexedTraversalControl.Lens.Simple, Control.Lens
    SimpleIsoControl.Lens.Simple, Control.Lens
    SimpleLensControl.Lens.Simple, Control.Lens
    SimpleLensesControl.Lens.TH, Control.Lens
    simpleLensesControl.Lens.TH, Control.Lens
    SimpleLoupeControl.Lens.Loupe, Control.Lens
    SimplePrismControl.Lens.Simple, Control.Lens
    SimpleReifiedIndexedSetterControl.Lens.Simple, Control.Lens
    SimpleReifiedIndexedTraversalControl.Lens.Simple, Control.Lens
    SimpleReifiedLensControl.Lens.Simple, Control.Lens
    SimpleReifiedSetterControl.Lens.Simple, Control.Lens
    SimpleReifiedTraversalControl.Lens.Simple, Control.Lens
    SimpleSetterControl.Lens.Simple, Control.Lens
    SimpleTraversalControl.Lens.Simple, Control.Lens
    simplyControl.Lens.Equality, Control.Lens
    singletonControl.Lens.Internal.Deque
    SingletonAndFieldControl.Lens.TH, Control.Lens
    singletonAndFieldControl.Lens.TH, Control.Lens
    SingletonIsoControl.Lens.TH, Control.Lens
    singletonIsoControl.Lens.TH, Control.Lens
    SingletonRequiredControl.Lens.TH, Control.Lens
    singletonRequiredControl.Lens.TH, Control.Lens
    singularControl.Lens.Traversal, Control.Lens
    size 
    1 (Function)Control.Lens.Internal.Zipper
    2 (Function)Control.Lens.Internal.Deque
    sliced 
    1 (Function)Data.Sequence.Lens
    2 (Function)Data.Vector.Lens
    3 (Function)Data.Vector.Generic.Lens
    slicedFromData.Sequence.Lens
    slicedToData.Sequence.Lens
    Snoc 
    1 (Data Constructor)Control.Lens.Internal.Zipper
    2 (Type/Class)Control.Lens.Cons, Control.Lens
    snocControl.Lens.Cons, Control.Lens
    splittingData.List.Split.Lens
    splittingOnData.List.Split.Lens
    splittingOneOfData.List.Split.Lens
    splittingPlacesData.List.Split.Lens
    splittingPlacesBlanksData.List.Split.Lens
    splittingWhenData.List.Split.Lens
    StartControl.Lens.Internal.Zipper
    startlControl.Lens.Internal.Zipper
    startrControl.Lens.Internal.Zipper
    storingControl.Lens.Lens, Control.Lens.Loupe, Control.Lens
    StrictControl.Lens.Iso, Control.Lens
    strictControl.Lens.Iso, Control.Lens
    strippingPrefixData.List.Lens
    substEqControl.Lens.Equality, Control.Lens
    SubstTypeLanguage.Haskell.TH.Lens
    substTypeLanguage.Haskell.TH.Lens
    substTypeVarsLanguage.Haskell.TH.Lens
    sumOfControl.Lens.Fold, Control.Lens
    SwappedControl.Lens.Iso, Control.Lens
    swappedControl.Lens.Iso, Control.Lens
    taintedDotControl.Lens.Internal.Setter, Control.Lens.Internal
    takingControl.Lens.Traversal, Control.Lens
    TakingWhile 
    1 (Type/Class)Control.Lens.Internal.Magma, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Magma, Control.Lens.Internal
    takingWhileControl.Lens.Fold, Control.Lens
    Tape 
    1 (Type/Class)Control.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Zipper
    teethControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    templateData.Data.Lens
    text 
    1 (Function)Data.Text.Strict.Lens
    2 (Function)Data.Text.Lazy.Lens
    3 (Function)Data.Text.Lens
    throughoutControl.Parallel.Strategies.Lens
    throwing 
    1 (Function)Control.Monad.Error.Lens
    2 (Function)Control.Exception.Lens
    throwingMControl.Exception.Lens
    throwingToControl.Exception.Lens
    tinplate 
    1 (Function)Data.Data.Lens
    2 (Function)GHC.Generics.Lens
    toControl.Lens.Getter, Control.Lens
    toListOfControl.Lens.Fold, Control.Lens
    toothControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    TopControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    toVectorOf 
    1 (Function)Data.Vector.Lens
    2 (Function)Data.Vector.Generic.Lens
    Track 
    1 (Type/Class)Control.Lens.Internal.Zipper
    2 (Data Constructor)Control.Lens.Internal.Zipper
    transformControl.Lens.Plated, Control.Lens
    transformMControl.Lens.Plated, Control.Lens
    transformMOfControl.Lens.Plated, Control.Lens
    transformMOnControl.Lens.Plated, Control.Lens
    transformMOnOfControl.Lens.Plated, Control.Lens
    transformOfControl.Lens.Plated, Control.Lens
    transformOnControl.Lens.Plated, Control.Lens
    transformOnOfControl.Lens.Plated, Control.Lens
    transposeOfControl.Lens.Traversal, Control.Lens
    TraversableControl.Lens.Traversal, Control.Lens
    TraversableWithIndexControl.Lens.Indexed, Control.Lens
    TraversalControl.Lens.Type, Control.Lens.Traversal, Control.Lens
    Traversal'Control.Lens.Type, Control.Lens.Traversal, Control.Lens
    traverseControl.Lens.Traversal, Control.Lens
    Traversed 
    1 (Type/Class)Control.Lens.Internal.Fold, Control.Lens.Internal, Control.Lens.Fold, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Fold, Control.Lens.Internal
    traversedControl.Lens.Traversal, Control.Lens
    traversed64Control.Lens.Traversal, Control.Lens
    traversedLazyControl.Lens.Internal.ByteString
    traversedLazy8Control.Lens.Internal.ByteString
    traversedStrictControl.Lens.Internal.ByteString
    traversedStrict8Control.Lens.Internal.ByteString
    traversedStrictTreeControl.Lens.Internal.ByteString
    traversedStrictTree8Control.Lens.Internal.ByteString
    TraverseMaxControl.Lens.Traversal, Control.Lens
    traverseMaxControl.Lens.Traversal, Control.Lens
    TraverseMinControl.Lens.Traversal, Control.Lens
    traverseMinControl.Lens.Traversal, Control.Lens
    traverseOfControl.Lens.Traversal, Control.Lens
    traverseOf_Control.Lens.Fold, Control.Lens
    TraversingControl.Lens.Traversal, Control.Lens
    Traversing'Control.Lens.Traversal, Control.Lens
    trying 
    1 (Function)Control.Monad.Error.Lens
    2 (Function)Control.Exception.Lens
    tugControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    tugsControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    tugToControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    TwoControl.Lens.Internal.Level, Control.Lens.Internal
    typeVarsLanguage.Haskell.TH.Lens
    typeVarsExLanguage.Haskell.TH.Lens
    unconsControl.Lens.Cons, Control.Lens
    uncurriedControl.Lens.Iso, Control.Lens
    underControl.Lens.Iso, Control.Lens
    unfocusingControl.Lens.Internal.Zoom, Control.Lens.Internal
    unfocusingErrControl.Lens.Internal.Zoom, Control.Lens.Internal
    unfocusingMayControl.Lens.Internal.Zoom, Control.Lens.Internal
    unfocusingOnControl.Lens.Internal.Zoom, Control.Lens.Internal
    unfocusingPlusControl.Lens.Internal.Zoom, Control.Lens.Internal
    unfocusingWithControl.Lens.Internal.Zoom, Control.Lens.Internal
    unfoldedControl.Lens.Fold, Control.Lens
    uniplateData.Data.Lens
    universeControl.Lens.Plated, Control.Lens
    universeOfControl.Lens.Plated, Control.Lens
    universeOnControl.Lens.Plated, Control.Lens
    universeOnOfControl.Lens.Plated, Control.Lens
    unpackLazyControl.Lens.Internal.ByteString
    unpackLazy8Control.Lens.Internal.ByteString
    unpackStrictControl.Lens.Internal.ByteString
    unpackStrict8Control.Lens.Internal.ByteString
    unsafelyRestoreTapeControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    unsafelyRestoreTrackControl.Lens.Internal.Zipper
    unsafePartsOfControl.Lens.Traversal, Control.Lens
    unsafePartsOf'Control.Lens.Traversal, Control.Lens
    unsafeSingularControl.Lens.Traversal, Control.Lens
    unsnocControl.Lens.Cons, Control.Lens
    untaintedControl.Lens.Internal.Setter, Control.Lens.Internal
    untaintedDotControl.Lens.Internal.Setter, Control.Lens.Internal
    untoControl.Lens.Review, Control.Lens
    unwrappedControl.Lens.Wrapped, Control.Lens
    unwrapped'Control.Lens.Wrapped, Control.Lens
    unwrappingControl.Lens.Wrapped, Control.Lens
    unwrappingsControl.Lens.Wrapped, Control.Lens
    uponData.Data.Lens
    upon'Data.Data.Lens
    upwardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    useControl.Lens.Getter, Control.Lens
    use'Control.Lens.Getter, Control.Lens
    usesControl.Lens.Getter, Control.Lens
    uses'Control.Lens.Getter, Control.Lens
    vector 
    1 (Function)Data.Vector.Lens
    2 (Function)Data.Vector.Generic.Lens
    viewControl.Lens.Getter, Control.Lens
    view'Control.Lens.Getter, Control.Lens
    viewLData.Sequence.Lens
    viewRData.Sequence.Lens
    viewsControl.Lens.Getter, Control.Lens
    views'Control.Lens.Getter, Control.Lens
    withinControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    withIndexControl.Lens.Indexed, Control.Lens
    withinsControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    withoutControl.Lens.Prism, Control.Lens
    wordingByData.List.Split.Lens
    WrappedControl.Lens.Wrapped, Control.Lens
    wrappedControl.Lens.Wrapped, Control.Lens
    wrapped'Control.Lens.Wrapped, Control.Lens
    wrappingControl.Lens.Wrapped, Control.Lens
    wrappingsControl.Lens.Wrapped, Control.Lens
    ZeroControl.Lens.Internal.Level, Control.Lens.Internal
    ZippedControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    Zipper 
    1 (Type/Class)Control.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Zipper
    zipperControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    ZippingControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    ZoomControl.Lens.Zoom, Control.Lens
    zoomControl.Lens.Zoom, Control.Lens
    ZoomedControl.Lens.Internal.Zoom, Control.Lens.Internal
    ^!Control.Lens.Action, Control.Lens.Operators, Control.Lens
    ^!!Control.Lens.Action, Control.Lens.Operators, Control.Lens
    ^!?Control.Lens.Action, Control.Lens.Operators, Control.Lens
    ^#Control.Lens.Lens, Control.Lens.Loupe, Control.Lens.Operators, Control.Lens
    ^.Control.Lens.Getter, Control.Lens.Operators, Control.Lens
    ^..Control.Lens.Fold, Control.Lens.Operators, Control.Lens
    ^=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    ^?Control.Lens.Fold, Control.Lens.Operators, Control.Lens
    ^?!Control.Lens.Fold, Control.Lens.Operators, Control.Lens
    ^@!Control.Lens.Action, Control.Lens.Operators, Control.Lens
    ^@!!Control.Lens.Action, Control.Lens.Operators, Control.Lens
    ^@!?Control.Lens.Action, Control.Lens.Operators, Control.Lens
    ^@.Control.Lens.Getter, Control.Lens.Operators, Control.Lens
    ^@..Control.Lens.Fold, Control.Lens.Operators, Control.Lens
    ^@?Control.Lens.Fold, Control.Lens.Operators, Control.Lens
    ^@?!Control.Lens.Fold, Control.Lens.Operators, Control.Lens
    ^^=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    ^^~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    ^~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    _1Control.Lens.Tuple, Control.Lens
    _2Control.Lens.Tuple, Control.Lens
    _3Control.Lens.Tuple, Control.Lens
    _4Control.Lens.Tuple, Control.Lens
    _5Control.Lens.Tuple, Control.Lens
    _6Control.Lens.Tuple, Control.Lens
    _7Control.Lens.Tuple, Control.Lens
    _8Control.Lens.Tuple, Control.Lens
    _9Control.Lens.Tuple, Control.Lens
    _AlreadyExistsSystem.IO.Error.Lens
    _ArithExceptionControl.Exception.Lens
    _ArrayExceptionControl.Exception.Lens
    _AssertionFailedControl.Exception.Lens
    _AsyncExceptionControl.Exception.Lens
    _atControl.Lens.At, Control.Lens
    _BlockedIndefinitelyOnMVarControl.Exception.Lens
    _BlockedIndefinitelyOnSTMControl.Exception.Lens
    _castData.Typeable.Lens
    _conjugateData.Complex.Lens
    _ConsControl.Lens.Cons, Control.Lens
    _DeadlockControl.Exception.Lens
    _DenormalControl.Exception.Lens
    _DivideByZeroControl.Exception.Lens
    _DynamicData.Dynamic.Lens
    _EOFSystem.IO.Error.Lens
    _ErrorCallControl.Exception.Lens
    _ExitCodeSystem.Exit.Lens
    _ExitFailureSystem.Exit.Lens
    _ExitSuccessSystem.Exit.Lens
    _gcastData.Typeable.Lens
    _HardwareFaultSystem.IO.Error.Lens
    _headControl.Lens.Cons, Control.Lens
    _HeapOverflowControl.Exception.Lens
    _IllegalOperationSystem.IO.Error.Lens
    _imagPartData.Complex.Lens
    _InappropriateTypeSystem.IO.Error.Lens
    _IndexOutOfBoundsControl.Exception.Lens
    _initControl.Lens.Cons, Control.Lens
    _InterruptedSystem.IO.Error.Lens
    _InvalidArgumentSystem.IO.Error.Lens
    _IOExceptionControl.Exception.Lens
    _JustControl.Lens.Prism, Control.Lens
    _lastControl.Lens.Cons, Control.Lens
    _LeftControl.Lens.Prism, Control.Lens
    _LossOfPrecisionControl.Exception.Lens
    _magnitudeData.Complex.Lens
    _NestedAtomicallyControl.Exception.Lens
    _NoMethodErrorControl.Exception.Lens
    _NonTerminationControl.Exception.Lens
    _NoSuchThingSystem.IO.Error.Lens
    _OtherErrorSystem.IO.Error.Lens
    _OverflowControl.Exception.Lens
    _PatternMatchFailControl.Exception.Lens
    _PermissionDeniedSystem.IO.Error.Lens
    _phaseData.Complex.Lens
    _polarData.Complex.Lens
    _ProtocolErrorSystem.IO.Error.Lens
    _realPartData.Complex.Lens
    _RecConErrorControl.Exception.Lens
    _RecSelErrorControl.Exception.Lens
    _RecUpdErrorControl.Exception.Lens
    _ResourceBusySystem.IO.Error.Lens
    _ResourceExhaustedSystem.IO.Error.Lens
    _ResourceVanishedSystem.IO.Error.Lens
    _RightControl.Lens.Prism, Control.Lens
    _SnocControl.Lens.Cons, Control.Lens
    _StackOverflowControl.Exception.Lens
    _SystemErrorSystem.IO.Error.Lens
    _tailControl.Lens.Cons, Control.Lens
    _ThreadKilledControl.Exception.Lens
    _TimeExpiredSystem.IO.Error.Lens
    _UndefinedElementControl.Exception.Lens
    _UnderflowControl.Exception.Lens
    _UnsatisfiedConstraintsSystem.IO.Error.Lens
    _UnsupportedOperationSystem.IO.Error.Lens
    _UserErrorSystem.IO.Error.Lens
    _UserInterruptControl.Exception.Lens
    |>Control.Lens.Cons, Control.Lens.Operators, Control.Lens
    ||=Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    ||~Control.Lens.Setter, Control.Lens.Operators, Control.Lens
    \ No newline at end of file diff --git a/doc-index-B.html b/doc-index-B.html index 38821d0ed..ad84967c7 100644 --- a/doc-index-B.html +++ b/doc-index-B.html @@ -1,4 +1,4 @@ lens-3.8: Lenses, Folds and Traversals (Index - B)

    lens-3.8: Lenses, Folds and Traversals

    Index - B

    backwardsControl.Lens.Fold, Control.Lens
    baseNumeric.Lens
    basenameSystem.FilePath.Lens
    Bazaar 
    1 (Type/Class)Control.Lens.Internal.Bazaar, Control.Lens.Internal, Control.Lens.Traversal, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Bazaar, Control.Lens.Internal, Control.Lens.Traversal, Control.Lens
    bazaarControl.Lens.Internal.Bazaar, Control.Lens.Internal
    Bazaar'Control.Lens.Internal.Bazaar, Control.Lens.Internal, Control.Lens.Traversal, Control.Lens
    BazaarT 
    1 (Type/Class)Control.Lens.Internal.Bazaar, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Bazaar, Control.Lens.Internal
    BazaarT'Control.Lens.Internal.Bazaar, Control.Lens.Internal
    besideControl.Lens.Traversal, Control.Lens
    biplateData.Data.Lens
    bitAtData.Bits.Lens
    bitsData.Bits.Lens
    BizarreControl.Lens.Internal.Bazaar, Control.Lens.Internal
    bothControl.Lens.Traversal, Control.Lens
    branchesData.Tree.Lens
    builder 
    1 (Function)Data.Text.Strict.Lens
    2 (Function)Data.Text.Lazy.Lens
    3 (Function)Data.Text.Lens
    BuildTraversalsControl.Lens.TH, Control.Lens
    buildTraversalsControl.Lens.TH, Control.Lens
    byteAtData.Bits.Lens
    bytes 
    1 (Function)Data.ByteString.Strict.Lens
    2 (Function)Data.ByteString.Lazy.Lens
    3 (Function)Data.ByteString.Lens
    \ No newline at end of file +

    lens-3.8: Lenses, Folds and Traversals

    Index - B

    backwardsControl.Lens.Fold, Control.Lens
    baseNumeric.Lens
    basenameSystem.FilePath.Lens
    Bazaar 
    1 (Type/Class)Control.Lens.Internal.Bazaar, Control.Lens.Internal, Control.Lens.Traversal, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Bazaar, Control.Lens.Internal, Control.Lens.Traversal, Control.Lens
    bazaarControl.Lens.Internal.Bazaar, Control.Lens.Internal
    Bazaar'Control.Lens.Internal.Bazaar, Control.Lens.Internal, Control.Lens.Traversal, Control.Lens
    BazaarT 
    1 (Type/Class)Control.Lens.Internal.Bazaar, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Bazaar, Control.Lens.Internal
    BazaarT'Control.Lens.Internal.Bazaar, Control.Lens.Internal
    BDControl.Lens.Internal.Deque
    besideControl.Lens.Traversal, Control.Lens
    biplateData.Data.Lens
    bitAtData.Bits.Lens
    bitsData.Bits.Lens
    BizarreControl.Lens.Internal.Bazaar, Control.Lens.Internal
    bothControl.Lens.Traversal, Control.Lens
    branchesData.Tree.Lens
    builder 
    1 (Function)Data.Text.Strict.Lens
    2 (Function)Data.Text.Lazy.Lens
    3 (Function)Data.Text.Lens
    BuildTraversalsControl.Lens.TH, Control.Lens
    buildTraversalsControl.Lens.TH, Control.Lens
    byteAtData.Bits.Lens
    bytes 
    1 (Function)Data.ByteString.Strict.Lens
    2 (Function)Data.ByteString.Lazy.Lens
    3 (Function)Data.ByteString.Lens
    \ No newline at end of file diff --git a/doc-index-D.html b/doc-index-D.html index 5fad5c779..ae93bf756 100644 --- a/doc-index-D.html +++ b/doc-index-D.html @@ -1,4 +1,4 @@ lens-3.8: Lenses, Folds and Traversals (Index - D)

    lens-3.8: Lenses, Folds and Traversals

    Index - D

    Deepening 
    1 (Type/Class)Control.Lens.Internal.Level, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Level, Control.Lens.Internal
    deepeningControl.Lens.Internal.Level, Control.Lens.Internal
    defaultRulesControl.Lens.TH, Control.Lens
    delimitersData.List.Split.Lens
    delimitingData.List.Split.Lens
    descriptionSystem.IO.Error.Lens
    dimapControl.Lens.Iso, Control.Lens
    directorySystem.FilePath.Lens
    distribControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    downwardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    droppingControl.Lens.Traversal, Control.Lens
    droppingWhileControl.Lens.Fold, Control.Lens
    \ No newline at end of file +

    lens-3.8: Lenses, Folds and Traversals

    Index - D

    Deepening 
    1 (Type/Class)Control.Lens.Internal.Level, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Level, Control.Lens.Internal
    deepeningControl.Lens.Internal.Level, Control.Lens.Internal
    defaultRulesControl.Lens.TH, Control.Lens
    delimitersData.List.Split.Lens
    delimitingData.List.Split.Lens
    DequeControl.Lens.Internal.Deque
    descriptionSystem.IO.Error.Lens
    dimapControl.Lens.Iso, Control.Lens
    directorySystem.FilePath.Lens
    distribControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    downwardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    droppingControl.Lens.Traversal, Control.Lens
    droppingWhileControl.Lens.Fold, Control.Lens
    \ No newline at end of file diff --git a/doc-index-F.html b/doc-index-F.html index 111aad1e9..4eca27166 100644 --- a/doc-index-F.html +++ b/doc-index-F.html @@ -1,4 +1,4 @@ lens-3.8: Lenses, Folds and Traversals (Index - F)

    lens-3.8: Lenses, Folds and Traversals

    Index - F

    farthestControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    Field1Control.Lens.Tuple, Control.Lens
    Field2Control.Lens.Tuple, Control.Lens
    Field3Control.Lens.Tuple, Control.Lens
    Field4Control.Lens.Tuple, Control.Lens
    Field5Control.Lens.Tuple, Control.Lens
    Field6Control.Lens.Tuple, Control.Lens
    Field7Control.Lens.Tuple, Control.Lens
    Field8Control.Lens.Tuple, Control.Lens
    Field9Control.Lens.Tuple, Control.Lens
    fileNameSystem.IO.Error.Lens
    filenameSystem.FilePath.Lens
    filteredControl.Lens.Fold, Control.Lens
    findOfControl.Lens.Fold, Control.Lens
    firstOfControl.Lens.Fold, Control.Lens
    flippedControl.Lens.Iso, Control.Lens
    Flow 
    1 (Type/Class)Control.Lens.Internal.Zipper
    2 (Data Constructor)Control.Lens.Internal.Zipper
    Flows 
    1 (Type/Class)Control.Lens.Internal.Level, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Level, Control.Lens.Internal
    focalPointControl.Lens.Internal.Zipper
    focusControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    focusedContextControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    Focusing 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingErr 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingMay 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingOn 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingPlus 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingWith 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FoldControl.Lens.Type, Control.Lens.Fold, Control.Lens
    FoldableWithIndexControl.Lens.Indexed, Control.Lens
    foldedControl.Lens.Fold, Control.Lens
    Folding 
    1 (Type/Class)Control.Lens.Internal.Fold, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Fold, Control.Lens.Internal
    foldingControl.Lens.Fold, Control.Lens
    foldl1OfControl.Lens.Fold, Control.Lens
    foldl1Of'Control.Lens.Fold, Control.Lens
    foldlMOfControl.Lens.Fold, Control.Lens
    foldlOfControl.Lens.Fold, Control.Lens
    foldlOf'Control.Lens.Fold, Control.Lens
    foldMapOfControl.Lens.Fold, Control.Lens
    foldOfControl.Lens.Fold, Control.Lens
    foldr1OfControl.Lens.Fold, Control.Lens
    foldr1Of'Control.Lens.Fold, Control.Lens
    foldrMOfControl.Lens.Fold, Control.Lens
    foldrOfControl.Lens.Fold, Control.Lens
    foldrOf'Control.Lens.Fold, Control.Lens
    forced 
    1 (Function)Data.Vector.Lens
    2 (Function)Data.Vector.Generic.Lens
    ForkControl.Lens.Internal.Zipper
    forMOfControl.Lens.Traversal, Control.Lens
    forMOf_Control.Lens.Fold, Control.Lens
    forOfControl.Lens.Traversal, Control.Lens
    forOf_Control.Lens.Fold, Control.Lens
    fromControl.Lens.Iso, Control.Lens
    fromEqControl.Lens.Equality, Control.Lens
    fromWithinControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    FunctorWithIndexControl.Lens.Indexed, Control.Lens
    \ No newline at end of file +

    lens-3.8: Lenses, Folds and Traversals

    Index - F

    farthestControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    Field1Control.Lens.Tuple, Control.Lens
    Field2Control.Lens.Tuple, Control.Lens
    Field3Control.Lens.Tuple, Control.Lens
    Field4Control.Lens.Tuple, Control.Lens
    Field5Control.Lens.Tuple, Control.Lens
    Field6Control.Lens.Tuple, Control.Lens
    Field7Control.Lens.Tuple, Control.Lens
    Field8Control.Lens.Tuple, Control.Lens
    Field9Control.Lens.Tuple, Control.Lens
    fileNameSystem.IO.Error.Lens
    filenameSystem.FilePath.Lens
    filteredControl.Lens.Fold, Control.Lens
    findOfControl.Lens.Fold, Control.Lens
    firstOfControl.Lens.Fold, Control.Lens
    flippedControl.Lens.Iso, Control.Lens
    Flow 
    1 (Type/Class)Control.Lens.Internal.Zipper
    2 (Data Constructor)Control.Lens.Internal.Zipper
    Flows 
    1 (Type/Class)Control.Lens.Internal.Level, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Level, Control.Lens.Internal
    focalPointControl.Lens.Internal.Zipper
    focusControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    focusedContextControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    Focusing 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingErr 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingMay 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingOn 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingPlus 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FocusingWith 
    1 (Type/Class)Control.Lens.Internal.Zoom, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Zoom, Control.Lens.Internal
    FoldControl.Lens.Type, Control.Lens.Fold, Control.Lens
    FoldableWithIndexControl.Lens.Indexed, Control.Lens
    foldedControl.Lens.Fold, Control.Lens
    Folding 
    1 (Type/Class)Control.Lens.Internal.Fold, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Fold, Control.Lens.Internal
    foldingControl.Lens.Fold, Control.Lens
    foldl1OfControl.Lens.Fold, Control.Lens
    foldl1Of'Control.Lens.Fold, Control.Lens
    foldlMOfControl.Lens.Fold, Control.Lens
    foldlOfControl.Lens.Fold, Control.Lens
    foldlOf'Control.Lens.Fold, Control.Lens
    foldMapOfControl.Lens.Fold, Control.Lens
    foldOfControl.Lens.Fold, Control.Lens
    foldr1OfControl.Lens.Fold, Control.Lens
    foldr1Of'Control.Lens.Fold, Control.Lens
    foldrMOfControl.Lens.Fold, Control.Lens
    foldrOfControl.Lens.Fold, Control.Lens
    foldrOf'Control.Lens.Fold, Control.Lens
    forced 
    1 (Function)Data.Vector.Lens
    2 (Function)Data.Vector.Generic.Lens
    ForkControl.Lens.Internal.Zipper
    forMOfControl.Lens.Traversal, Control.Lens
    forMOf_Control.Lens.Fold, Control.Lens
    forOfControl.Lens.Traversal, Control.Lens
    forOf_Control.Lens.Fold, Control.Lens
    fromControl.Lens.Iso, Control.Lens
    fromEqControl.Lens.Equality, Control.Lens
    fromListControl.Lens.Internal.Deque
    fromWithinControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    FunctorWithIndexControl.Lens.Indexed, Control.Lens
    \ No newline at end of file diff --git a/doc-index-I.html b/doc-index-I.html index e3b868b08..c015c610c 100644 --- a/doc-index-I.html +++ b/doc-index-I.html @@ -1,4 +1,4 @@ lens-3.8: Lenses, Folds and Traversals (Index - I)

    lens-3.8: Lenses, Folds and Traversals

    Index - I

    iactControl.Lens.Action, Control.Lens
    iallControl.Lens.Indexed, Control.Lens
    iallOfControl.Lens.Fold, Control.Lens
    ianyControl.Lens.Indexed, Control.Lens
    ianyOfControl.Lens.Fold, Control.Lens
    icensoringControl.Lens.Setter, Control.Lens
    icomposeControl.Lens.Indexed, Control.Lens
    iconcatMapControl.Lens.Indexed, Control.Lens
    iconcatMapOfControl.Lens.Fold, Control.Lens
    Identical 
    1 (Type/Class)Control.Lens.Equality, Control.Lens
    2 (Data Constructor)Control.Lens.Equality, Control.Lens
    idownwardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    idroppingWhileControl.Lens.Fold, Control.Lens
    iduplicateControl.Lens.Internal.Context, Control.Lens.Internal
    iexperimentControl.Lens.Internal.Context, Control.Lens.Internal
    iextendControl.Lens.Internal.Context, Control.Lens.Internal
    iextractControl.Lens.Internal.Context, Control.Lens.Internal
    ifilteredControl.Lens.Fold, Control.Lens
    ifindControl.Lens.Indexed, Control.Lens
    ifindOfControl.Lens.Fold, Control.Lens
    ifmapControl.Lens.Internal.Context, Control.Lens.Internal
    ifoldedControl.Lens.Indexed, Control.Lens
    ifoldingControl.Lens.Indexed, Control.Lens
    ifoldlControl.Lens.Indexed, Control.Lens
    ifoldl'Control.Lens.Indexed, Control.Lens
    ifoldlMControl.Lens.Indexed, Control.Lens
    ifoldlMOfControl.Lens.Fold, Control.Lens
    ifoldlOfControl.Lens.Fold, Control.Lens
    ifoldlOf'Control.Lens.Fold, Control.Lens
    ifoldMapControl.Lens.Indexed, Control.Lens
    ifoldMapOfControl.Lens.Fold, Control.Lens
    ifoldrControl.Lens.Indexed, Control.Lens
    ifoldr'Control.Lens.Indexed, Control.Lens
    ifoldrMControl.Lens.Indexed, Control.Lens
    ifoldrMOfControl.Lens.Fold, Control.Lens
    ifoldrOfControl.Lens.Fold, Control.Lens
    ifoldrOf'Control.Lens.Fold, Control.Lens
    iforControl.Lens.Indexed, Control.Lens
    iforMControl.Lens.Indexed, Control.Lens
    iforMOfControl.Lens.Traversal, Control.Lens
    iforMOf_Control.Lens.Fold, Control.Lens
    iforM_Control.Lens.Indexed, Control.Lens
    iforOfControl.Lens.Traversal, Control.Lens
    iforOf_Control.Lens.Fold, Control.Lens
    ifor_Control.Lens.Indexed, Control.Lens
    ifromWithinControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    ignoredControl.Lens.Traversal, Control.Lens
    ilensControl.Lens.Lens, Control.Lens
    ilevelsControl.Lens.Level, Control.Lens
    ilisteningControl.Lens.Getter, Control.Lens
    ilisteningsControl.Lens.Getter, Control.Lens
    imagmaControl.Lens.Iso, Control.Lens
    imapControl.Lens.Indexed, Control.Lens
    imapAccumLControl.Lens.Indexed, Control.Lens
    imapAccumLOfControl.Lens.Traversal, Control.Lens
    imapAccumRControl.Lens.Indexed, Control.Lens
    imapAccumROfControl.Lens.Traversal, Control.Lens
    imapMControl.Lens.Indexed, Control.Lens
    imapMOfControl.Lens.Traversal, Control.Lens
    imapMOf_Control.Lens.Fold, Control.Lens
    imapM_Control.Lens.Indexed, Control.Lens
    imapOfControl.Lens.Setter, Control.Lens
    imappedControl.Lens.Indexed, Control.Lens
    IndexControl.Lens.Each, Control.Lens
    indexControl.Lens.Indexed, Control.Lens
    IndexableControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    Indexed 
    1 (Type/Class)Control.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    indexedControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    IndexedActingControl.Lens.Action, Control.Lens
    IndexedActionControl.Lens.Type, Control.Lens.Action, Control.Lens
    IndexedComonadControl.Lens.Internal.Context, Control.Lens.Internal
    IndexedComonadStoreControl.Lens.Internal.Context, Control.Lens.Internal
    IndexedFoldControl.Lens.Type, Control.Lens.Fold, Control.Lens
    IndexedFunctorControl.Lens.Internal.Context, Control.Lens.Internal
    IndexedGetterControl.Lens.Type, Control.Lens.Getter, Control.Lens
    IndexedGettingControl.Lens.Getter, Control.Lens
    IndexedLensControl.Lens.Type, Control.Lens.Lens, Control.Lens
    IndexedLens'Control.Lens.Type, Control.Lens.Lens, Control.Lens
    IndexedLensLikeControl.Lens.Type, Control.Lens
    IndexedLensLike'Control.Lens.Type, Control.Lens
    IndexedMonadicFoldControl.Lens.Type, Control.Lens.Action, Control.Lens
    IndexedSetterControl.Lens.Type, Control.Lens.Setter, Control.Lens
    IndexedSetter'Control.Lens.Type, Control.Lens.Setter, Control.Lens
    IndexedTraversalControl.Lens.Type, Control.Lens.Traversal, Control.Lens
    IndexedTraversal'Control.Lens.Type, Control.Lens.Traversal, Control.Lens
    Indexing 
    1 (Type/Class)Control.Lens.Internal.Indexed, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Indexed, Control.Lens.Internal
    indexingControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    Indexing64 
    1 (Type/Class)Control.Lens.Internal.Indexed, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Indexed, Control.Lens.Internal
    indexing64Control.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    IndexPreservingActionControl.Lens.Type, Control.Lens
    IndexPreservingFoldControl.Lens.Type, Control.Lens
    IndexPreservingGetterControl.Lens.Type, Control.Lens
    IndexPreservingLensControl.Lens.Type, Control.Lens
    IndexPreservingLens'Control.Lens.Type, Control.Lens
    IndexPreservingMonadicFoldControl.Lens.Type, Control.Lens
    IndexPreservingSetterControl.Lens.Type, Control.Lens
    IndexPreservingSetter'Control.Lens.Type, Control.Lens
    IndexPreservingTraversalControl.Lens.Type, Control.Lens
    IndexPreservingTraversal'Control.Lens.Type, Control.Lens
    indicesControl.Lens.Indexed, Control.Lens
    ineffectiveControl.Lens.Internal.Action, Control.Lens.Internal
    insideControl.Lens.Lens, Control.Lens
    ioverControl.Lens.Setter, Control.Lens
    ipartsOfControl.Lens.Traversal, Control.Lens
    ipartsOf'Control.Lens.Traversal, Control.Lens
    ipassingControl.Lens.Setter, Control.Lens
    ipeekControl.Lens.Internal.Context, Control.Lens.Internal
    ipeeksControl.Lens.Internal.Context, Control.Lens.Internal
    iperformControl.Lens.Action, Control.Lens
    iperformsControl.Lens.Action, Control.Lens
    iplensControl.Lens.Lens, Control.Lens
    iposControl.Lens.Internal.Context, Control.Lens.Internal
    ipreControl.Lens.Fold, Control.Lens
    ipreuseControl.Lens.Fold, Control.Lens
    ipreusesControl.Lens.Fold, Control.Lens
    ipreviewControl.Lens.Fold, Control.Lens
    ipreviewsControl.Lens.Fold, Control.Lens
    IsByteStringData.ByteString.Lens
    iseekControl.Lens.Internal.Context, Control.Lens.Internal
    iseeksControl.Lens.Internal.Context, Control.Lens.Internal
    isetsControl.Lens.Setter, Control.Lens
    isn'tControl.Lens.Prism, Control.Lens
    IsoControl.Lens.Type, Control.Lens.Iso, Control.Lens
    isoControl.Lens.Iso, Control.Lens
    Iso'Control.Lens.Type, Control.Lens.Iso, Control.Lens
    isoRulesControl.Lens.TH, Control.Lens
    IsTextData.Text.Lens
    itakingWhileControl.Lens.Fold, Control.Lens
    iteratedControl.Lens.Fold, Control.Lens
    itoListControl.Lens.Indexed, Control.Lens
    itoListOfControl.Lens.Fold, Control.Lens
    itraverseControl.Lens.Indexed, Control.Lens
    itraversedControl.Lens.Indexed, Control.Lens
    itraverseOfControl.Lens.Traversal, Control.Lens
    itraverseOf_Control.Lens.Fold, Control.Lens
    itraverse_Control.Lens.Indexed, Control.Lens
    iunsafePartsOfControl.Lens.Traversal, Control.Lens
    iunsafePartsOf'Control.Lens.Traversal, Control.Lens
    iuseControl.Lens.Getter, Control.Lens
    iusesControl.Lens.Getter, Control.Lens
    iviewControl.Lens.Getter, Control.Lens
    iviewsControl.Lens.Getter, Control.Lens
    iwithinControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    iwithinsControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    ixControl.Lens.At, Control.Lens
    ixAtControl.Lens.At, Control.Lens
    ixEachControl.Lens.At, Control.Lens
    IxedControl.Lens.At, Control.Lens
    ixmappedData.Array.Lens
    \ No newline at end of file +

    lens-3.8: Lenses, Folds and Traversals

    Index - I

    iactControl.Lens.Action, Control.Lens
    iallControl.Lens.Indexed, Control.Lens
    iallOfControl.Lens.Fold, Control.Lens
    ianyControl.Lens.Indexed, Control.Lens
    ianyOfControl.Lens.Fold, Control.Lens
    icensoringControl.Lens.Setter, Control.Lens
    icomposeControl.Lens.Indexed, Control.Lens
    iconcatMapControl.Lens.Indexed, Control.Lens
    iconcatMapOfControl.Lens.Fold, Control.Lens
    Identical 
    1 (Type/Class)Control.Lens.Equality, Control.Lens
    2 (Data Constructor)Control.Lens.Equality, Control.Lens
    idownwardControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    idroppingWhileControl.Lens.Fold, Control.Lens
    iduplicateControl.Lens.Internal.Context, Control.Lens.Internal
    iexperimentControl.Lens.Internal.Context, Control.Lens.Internal
    iextendControl.Lens.Internal.Context, Control.Lens.Internal
    iextractControl.Lens.Internal.Context, Control.Lens.Internal
    ifilteredControl.Lens.Fold, Control.Lens
    ifindControl.Lens.Indexed, Control.Lens
    ifindOfControl.Lens.Fold, Control.Lens
    ifmapControl.Lens.Internal.Context, Control.Lens.Internal
    ifoldedControl.Lens.Indexed, Control.Lens
    ifoldingControl.Lens.Indexed, Control.Lens
    ifoldlControl.Lens.Indexed, Control.Lens
    ifoldl'Control.Lens.Indexed, Control.Lens
    ifoldlMControl.Lens.Indexed, Control.Lens
    ifoldlMOfControl.Lens.Fold, Control.Lens
    ifoldlOfControl.Lens.Fold, Control.Lens
    ifoldlOf'Control.Lens.Fold, Control.Lens
    ifoldMapControl.Lens.Indexed, Control.Lens
    ifoldMapOfControl.Lens.Fold, Control.Lens
    ifoldrControl.Lens.Indexed, Control.Lens
    ifoldr'Control.Lens.Indexed, Control.Lens
    ifoldrMControl.Lens.Indexed, Control.Lens
    ifoldrMOfControl.Lens.Fold, Control.Lens
    ifoldrOfControl.Lens.Fold, Control.Lens
    ifoldrOf'Control.Lens.Fold, Control.Lens
    iforControl.Lens.Indexed, Control.Lens
    iforMControl.Lens.Indexed, Control.Lens
    iforMOfControl.Lens.Traversal, Control.Lens
    iforMOf_Control.Lens.Fold, Control.Lens
    iforM_Control.Lens.Indexed, Control.Lens
    iforOfControl.Lens.Traversal, Control.Lens
    iforOf_Control.Lens.Fold, Control.Lens
    ifor_Control.Lens.Indexed, Control.Lens
    ifromWithinControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    ignoredControl.Lens.Traversal, Control.Lens
    ilensControl.Lens.Lens, Control.Lens
    ilevelsControl.Lens.Level, Control.Lens
    ilisteningControl.Lens.Getter, Control.Lens
    ilisteningsControl.Lens.Getter, Control.Lens
    imagmaControl.Lens.Iso, Control.Lens
    imapControl.Lens.Indexed, Control.Lens
    imapAccumLControl.Lens.Indexed, Control.Lens
    imapAccumLOfControl.Lens.Traversal, Control.Lens
    imapAccumRControl.Lens.Indexed, Control.Lens
    imapAccumROfControl.Lens.Traversal, Control.Lens
    imapMControl.Lens.Indexed, Control.Lens
    imapMOfControl.Lens.Traversal, Control.Lens
    imapMOf_Control.Lens.Fold, Control.Lens
    imapM_Control.Lens.Indexed, Control.Lens
    imapOfControl.Lens.Setter, Control.Lens
    imappedControl.Lens.Indexed, Control.Lens
    IndexControl.Lens.Each, Control.Lens
    indexControl.Lens.Indexed, Control.Lens
    IndexableControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    Indexed 
    1 (Type/Class)Control.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    indexedControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    IndexedActingControl.Lens.Action, Control.Lens
    IndexedActionControl.Lens.Type, Control.Lens.Action, Control.Lens
    IndexedComonadControl.Lens.Internal.Context, Control.Lens.Internal
    IndexedComonadStoreControl.Lens.Internal.Context, Control.Lens.Internal
    IndexedFoldControl.Lens.Type, Control.Lens.Fold, Control.Lens
    IndexedFunctorControl.Lens.Internal.Context, Control.Lens.Internal
    IndexedGetterControl.Lens.Type, Control.Lens.Getter, Control.Lens
    IndexedGettingControl.Lens.Getter, Control.Lens
    IndexedLensControl.Lens.Type, Control.Lens.Lens, Control.Lens
    IndexedLens'Control.Lens.Type, Control.Lens.Lens, Control.Lens
    IndexedLensLikeControl.Lens.Type, Control.Lens
    IndexedLensLike'Control.Lens.Type, Control.Lens
    IndexedMonadicFoldControl.Lens.Type, Control.Lens.Action, Control.Lens
    IndexedSetterControl.Lens.Type, Control.Lens.Setter, Control.Lens
    IndexedSetter'Control.Lens.Type, Control.Lens.Setter, Control.Lens
    IndexedTraversalControl.Lens.Type, Control.Lens.Traversal, Control.Lens
    IndexedTraversal'Control.Lens.Type, Control.Lens.Traversal, Control.Lens
    Indexing 
    1 (Type/Class)Control.Lens.Internal.Indexed, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Indexed, Control.Lens.Internal
    indexingControl.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    Indexing64 
    1 (Type/Class)Control.Lens.Internal.Indexed, Control.Lens.Internal
    2 (Data Constructor)Control.Lens.Internal.Indexed, Control.Lens.Internal
    indexing64Control.Lens.Internal.Indexed, Control.Lens.Internal, Control.Lens.Indexed, Control.Lens
    IndexPreservingActionControl.Lens.Type, Control.Lens
    IndexPreservingFoldControl.Lens.Type, Control.Lens
    IndexPreservingGetterControl.Lens.Type, Control.Lens
    IndexPreservingLensControl.Lens.Type, Control.Lens
    IndexPreservingLens'Control.Lens.Type, Control.Lens
    IndexPreservingMonadicFoldControl.Lens.Type, Control.Lens
    IndexPreservingSetterControl.Lens.Type, Control.Lens
    IndexPreservingSetter'Control.Lens.Type, Control.Lens
    IndexPreservingTraversalControl.Lens.Type, Control.Lens
    IndexPreservingTraversal'Control.Lens.Type, Control.Lens
    indicesControl.Lens.Indexed, Control.Lens
    ineffectiveControl.Lens.Internal.Action, Control.Lens.Internal
    insideControl.Lens.Lens, Control.Lens
    integralNumeric.Lens
    ioverControl.Lens.Setter, Control.Lens
    ipartsOfControl.Lens.Traversal, Control.Lens
    ipartsOf'Control.Lens.Traversal, Control.Lens
    ipassingControl.Lens.Setter, Control.Lens
    ipeekControl.Lens.Internal.Context, Control.Lens.Internal
    ipeeksControl.Lens.Internal.Context, Control.Lens.Internal
    iperformControl.Lens.Action, Control.Lens
    iperformsControl.Lens.Action, Control.Lens
    iplensControl.Lens.Lens, Control.Lens
    iposControl.Lens.Internal.Context, Control.Lens.Internal
    ipreControl.Lens.Fold, Control.Lens
    ipreuseControl.Lens.Fold, Control.Lens
    ipreusesControl.Lens.Fold, Control.Lens
    ipreviewControl.Lens.Fold, Control.Lens
    ipreviewsControl.Lens.Fold, Control.Lens
    IsByteStringData.ByteString.Lens
    iseekControl.Lens.Internal.Context, Control.Lens.Internal
    iseeksControl.Lens.Internal.Context, Control.Lens.Internal
    isetsControl.Lens.Setter, Control.Lens
    isn'tControl.Lens.Prism, Control.Lens
    IsoControl.Lens.Type, Control.Lens.Iso, Control.Lens
    isoControl.Lens.Iso, Control.Lens
    Iso'Control.Lens.Type, Control.Lens.Iso, Control.Lens
    isoRulesControl.Lens.TH, Control.Lens
    IsTextData.Text.Lens
    itakingWhileControl.Lens.Fold, Control.Lens
    iteratedControl.Lens.Fold, Control.Lens
    itoListControl.Lens.Indexed, Control.Lens
    itoListOfControl.Lens.Fold, Control.Lens
    itraverseControl.Lens.Indexed, Control.Lens
    itraversedControl.Lens.Indexed, Control.Lens
    itraverseOfControl.Lens.Traversal, Control.Lens
    itraverseOf_Control.Lens.Fold, Control.Lens
    itraverse_Control.Lens.Indexed, Control.Lens
    iunsafePartsOfControl.Lens.Traversal, Control.Lens
    iunsafePartsOf'Control.Lens.Traversal, Control.Lens
    iuseControl.Lens.Getter, Control.Lens
    iusesControl.Lens.Getter, Control.Lens
    iviewControl.Lens.Getter, Control.Lens
    iviewsControl.Lens.Getter, Control.Lens
    iwithinControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    iwithinsControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    ixControl.Lens.At, Control.Lens
    ixAtControl.Lens.At, Control.Lens
    ixEachControl.Lens.At, Control.Lens
    IxedControl.Lens.At, Control.Lens
    ixmappedData.Array.Lens
    IxValueControl.Lens.At, Control.Lens
    \ No newline at end of file diff --git a/doc-index-N.html b/doc-index-N.html index bc6dc2531..49023def3 100644 --- a/doc-index-N.html +++ b/doc-index-N.html @@ -1,4 +1,4 @@ lens-3.8: Lenses, Folds and Traversals (Index - N)

    lens-3.8: Lenses, Folds and Traversals

    Index - N

    nameLanguage.Haskell.TH.Lens
    noEffectControl.Lens.Internal.Getter, Control.Lens.Internal
    NoMaxControl.Lens.Internal.Fold, Control.Lens.Internal
    NoMinControl.Lens.Internal.Fold, Control.Lens.Internal
    nonControl.Lens.Iso, Control.Lens
    notElemOfControl.Lens.Fold, Control.Lens
    notNullOfControl.Lens.Fold, Control.Lens
    nullLeftControl.Lens.Internal.Zipper
    nullOfControl.Lens.Fold, Control.Lens
    nullRightControl.Lens.Internal.Zipper
    \ No newline at end of file +

    lens-3.8: Lenses, Folds and Traversals

    Index - N

    nameLanguage.Haskell.TH.Lens
    noEffectControl.Lens.Internal.Getter, Control.Lens.Internal
    NoMaxControl.Lens.Internal.Fold, Control.Lens.Internal
    NoMinControl.Lens.Internal.Fold, Control.Lens.Internal
    nonControl.Lens.Iso, Control.Lens
    notElemOfControl.Lens.Fold, Control.Lens
    notNullOfControl.Lens.Fold, Control.Lens
    nullControl.Lens.Internal.Deque
    nullLeftControl.Lens.Internal.Zipper
    nullOfControl.Lens.Fold, Control.Lens
    nullRightControl.Lens.Internal.Zipper
    \ No newline at end of file diff --git a/doc-index-S.html b/doc-index-S.html index ecf44ac4d..c1fcad0af 100644 --- a/doc-index-S.html +++ b/doc-index-S.html @@ -1,4 +1,4 @@ lens-3.8: Lenses, Folds and Traversals (Index - S)

    lens-3.8: Lenses, Folds and Traversals

    Index - S

    saveTapeControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    scanl1OfControl.Lens.Traversal, Control.Lens
    scanr1OfControl.Lens.Traversal, Control.Lens
    scribeControl.Lens.Setter, Control.Lens
    sellControl.Lens.Internal.Context, Control.Lens.Internal
    SellableControl.Lens.Internal.Context, Control.Lens.Internal
    seqOfControl.Seq.Lens
    sequenceAOfControl.Lens.Traversal, Control.Lens
    sequenceAOf_Control.Lens.Fold, Control.Lens
    Sequenced 
    1 (Type/Class)Control.Lens.Internal.Fold, Control.Lens.Internal, Control.Lens.Fold, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Fold, Control.Lens.Internal
    sequenceOfControl.Lens.Traversal, Control.Lens
    sequenceOf_Control.Lens.Fold, Control.Lens
    setControl.Lens.Setter, Control.Lens
    set'Control.Lens.Setter, Control.Lens
    setmapped 
    1 (Function)Data.Set.Lens
    2 (Function)Data.HashSet.Lens
    3 (Function)Data.IntSet.Lens
    setOf 
    1 (Function)Data.Set.Lens
    2 (Function)Data.HashSet.Lens
    3 (Function)Data.IntSet.Lens
    setsControl.Lens.Setter, Control.Lens
    SettableControl.Lens.Internal.Setter, Control.Lens.Internal, Control.Lens.Setter, Control.Lens
    SetterControl.Lens.Type, Control.Lens.Setter, Control.Lens
    Setter'Control.Lens.Type, Control.Lens.Setter, Control.Lens
    SettingControl.Lens.Setter, Control.Lens
    settingControl.Lens.Setter, Control.Lens
    Setting'Control.Lens.Setter, Control.Lens
    SimpleControl.Lens.Type, Control.Lens
    simpleControl.Lens.Iso, Control.Lens
    SimpleIndexedSetterControl.Lens.Simple, Control.Lens
    SimpleIndexedTraversalControl.Lens.Simple, Control.Lens
    SimpleIsoControl.Lens.Simple, Control.Lens
    SimpleLensControl.Lens.Simple, Control.Lens
    SimpleLensesControl.Lens.TH, Control.Lens
    simpleLensesControl.Lens.TH, Control.Lens
    SimpleLoupeControl.Lens.Loupe, Control.Lens
    SimplePrismControl.Lens.Simple, Control.Lens
    SimpleReifiedIndexedSetterControl.Lens.Simple, Control.Lens
    SimpleReifiedIndexedTraversalControl.Lens.Simple, Control.Lens
    SimpleReifiedLensControl.Lens.Simple, Control.Lens
    SimpleReifiedSetterControl.Lens.Simple, Control.Lens
    SimpleReifiedTraversalControl.Lens.Simple, Control.Lens
    SimpleSetterControl.Lens.Simple, Control.Lens
    SimpleTraversalControl.Lens.Simple, Control.Lens
    simplyControl.Lens.Equality, Control.Lens
    SingletonAndFieldControl.Lens.TH, Control.Lens
    singletonAndFieldControl.Lens.TH, Control.Lens
    SingletonIsoControl.Lens.TH, Control.Lens
    singletonIsoControl.Lens.TH, Control.Lens
    SingletonRequiredControl.Lens.TH, Control.Lens
    singletonRequiredControl.Lens.TH, Control.Lens
    singularControl.Lens.Traversal, Control.Lens
    sizeControl.Lens.Internal.Zipper
    sliced 
    1 (Function)Data.Sequence.Lens
    2 (Function)Data.Vector.Lens
    3 (Function)Data.Vector.Generic.Lens
    slicedFromData.Sequence.Lens
    slicedToData.Sequence.Lens
    Snoc 
    1 (Data Constructor)Control.Lens.Internal.Zipper
    2 (Type/Class)Control.Lens.Cons, Control.Lens
    snocControl.Lens.Cons, Control.Lens
    splittingData.List.Split.Lens
    splittingOnData.List.Split.Lens
    splittingOneOfData.List.Split.Lens
    splittingPlacesData.List.Split.Lens
    splittingPlacesBlanksData.List.Split.Lens
    splittingWhenData.List.Split.Lens
    StartControl.Lens.Internal.Zipper
    startlControl.Lens.Internal.Zipper
    startrControl.Lens.Internal.Zipper
    storingControl.Lens.Lens, Control.Lens.Loupe, Control.Lens
    StrictControl.Lens.Iso, Control.Lens
    strictControl.Lens.Iso, Control.Lens
    strippingPrefixData.List.Lens
    substEqControl.Lens.Equality, Control.Lens
    SubstTypeLanguage.Haskell.TH.Lens
    substTypeLanguage.Haskell.TH.Lens
    substTypeVarsLanguage.Haskell.TH.Lens
    sumOfControl.Lens.Fold, Control.Lens
    SwappedControl.Lens.Iso, Control.Lens
    swappedControl.Lens.Iso, Control.Lens
    \ No newline at end of file +

    lens-3.8: Lenses, Folds and Traversals

    Index - S

    saveTapeControl.Lens.Internal.Zipper, Control.Lens.Zipper, Control.Lens
    scanl1OfControl.Lens.Traversal, Control.Lens
    scanr1OfControl.Lens.Traversal, Control.Lens
    scribeControl.Lens.Setter, Control.Lens
    sellControl.Lens.Internal.Context, Control.Lens.Internal
    SellableControl.Lens.Internal.Context, Control.Lens.Internal
    seqOfControl.Seq.Lens
    sequenceAOfControl.Lens.Traversal, Control.Lens
    sequenceAOf_Control.Lens.Fold, Control.Lens
    Sequenced 
    1 (Type/Class)Control.Lens.Internal.Fold, Control.Lens.Internal, Control.Lens.Fold, Control.Lens
    2 (Data Constructor)Control.Lens.Internal.Fold, Control.Lens.Internal
    sequenceOfControl.Lens.Traversal, Control.Lens
    sequenceOf_Control.Lens.Fold, Control.Lens
    setControl.Lens.Setter, Control.Lens
    set'Control.Lens.Setter, Control.Lens
    setmapped 
    1 (Function)Data.Set.Lens
    2 (Function)Data.HashSet.Lens
    3 (Function)Data.IntSet.Lens
    setOf 
    1 (Function)Data.Set.Lens
    2 (Function)Data.HashSet.Lens
    3 (Function)Data.IntSet.Lens
    setsControl.Lens.Setter, Control.Lens
    SettableControl.Lens.Internal.Setter, Control.Lens.Internal, Control.Lens.Setter, Control.Lens
    SetterControl.Lens.Type, Control.Lens.Setter, Control.Lens
    Setter'Control.Lens.Type, Control.Lens.Setter, Control.Lens
    SettingControl.Lens.Setter, Control.Lens
    settingControl.Lens.Setter, Control.Lens
    Setting'Control.Lens.Setter, Control.Lens
    SimpleControl.Lens.Type, Control.Lens
    simpleControl.Lens.Iso, Control.Lens
    SimpleIndexedSetterControl.Lens.Simple, Control.Lens
    SimpleIndexedTraversalControl.Lens.Simple, Control.Lens
    SimpleIsoControl.Lens.Simple, Control.Lens
    SimpleLensControl.Lens.Simple, Control.Lens
    SimpleLensesControl.Lens.TH, Control.Lens
    simpleLensesControl.Lens.TH, Control.Lens
    SimpleLoupeControl.Lens.Loupe, Control.Lens
    SimplePrismControl.Lens.Simple, Control.Lens
    SimpleReifiedIndexedSetterControl.Lens.Simple, Control.Lens
    SimpleReifiedIndexedTraversalControl.Lens.Simple, Control.Lens
    SimpleReifiedLensControl.Lens.Simple, Control.Lens
    SimpleReifiedSetterControl.Lens.Simple, Control.Lens
    SimpleReifiedTraversalControl.Lens.Simple, Control.Lens
    SimpleSetterControl.Lens.Simple, Control.Lens
    SimpleTraversalControl.Lens.Simple, Control.Lens
    simplyControl.Lens.Equality, Control.Lens
    singletonControl.Lens.Internal.Deque
    SingletonAndFieldControl.Lens.TH, Control.Lens
    singletonAndFieldControl.Lens.TH, Control.Lens
    SingletonIsoControl.Lens.TH, Control.Lens
    singletonIsoControl.Lens.TH, Control.Lens
    SingletonRequiredControl.Lens.TH, Control.Lens
    singletonRequiredControl.Lens.TH, Control.Lens
    singularControl.Lens.Traversal, Control.Lens
    size 
    1 (Function)Control.Lens.Internal.Zipper
    2 (Function)Control.Lens.Internal.Deque
    sliced 
    1 (Function)Data.Sequence.Lens
    2 (Function)Data.Vector.Lens
    3 (Function)Data.Vector.Generic.Lens
    slicedFromData.Sequence.Lens
    slicedToData.Sequence.Lens
    Snoc 
    1 (Data Constructor)Control.Lens.Internal.Zipper
    2 (Type/Class)Control.Lens.Cons, Control.Lens
    snocControl.Lens.Cons, Control.Lens
    splittingData.List.Split.Lens
    splittingOnData.List.Split.Lens
    splittingOneOfData.List.Split.Lens
    splittingPlacesData.List.Split.Lens
    splittingPlacesBlanksData.List.Split.Lens
    splittingWhenData.List.Split.Lens
    StartControl.Lens.Internal.Zipper
    startlControl.Lens.Internal.Zipper
    startrControl.Lens.Internal.Zipper
    storingControl.Lens.Lens, Control.Lens.Loupe, Control.Lens
    StrictControl.Lens.Iso, Control.Lens
    strictControl.Lens.Iso, Control.Lens
    strippingPrefixData.List.Lens
    substEqControl.Lens.Equality, Control.Lens
    SubstTypeLanguage.Haskell.TH.Lens
    substTypeLanguage.Haskell.TH.Lens
    substTypeVarsLanguage.Haskell.TH.Lens
    sumOfControl.Lens.Fold, Control.Lens
    SwappedControl.Lens.Iso, Control.Lens
    swappedControl.Lens.Iso, Control.Lens
    \ No newline at end of file diff --git a/doc-index-V.html b/doc-index-V.html index 99aae3d8a..5777b2d6c 100644 --- a/doc-index-V.html +++ b/doc-index-V.html @@ -1,4 +1,4 @@ lens-3.8: Lenses, Folds and Traversals (Index - V)

    lens-3.8: Lenses, Folds and Traversals

    Index - V

    ValueControl.Lens.At, Control.Lens
    vector 
    1 (Function)Data.Vector.Lens
    2 (Function)Data.Vector.Generic.Lens
    viewControl.Lens.Getter, Control.Lens
    view'Control.Lens.Getter, Control.Lens
    viewLData.Sequence.Lens
    viewRData.Sequence.Lens
    viewsControl.Lens.Getter, Control.Lens
    views'Control.Lens.Getter, Control.Lens
    \ No newline at end of file +

    lens-3.8: Lenses, Folds and Traversals

    \ No newline at end of file diff --git a/index-frames.html b/index-frames.html index 935b54a9c..c1d2a6950 100644 --- a/index-frames.html +++ b/index-frames.html @@ -1,4 +1,4 @@ lens-3.8: Lenses, Folds and Traversals

    Modules

    \ No newline at end of file +

    Modules

    \ No newline at end of file diff --git a/index.html b/index.html index d2254ba05..e200edfa9 100644 --- a/index.html +++ b/index.html @@ -42,4 +42,4 @@

    What is provided in this library is a number of stock lenses and traversals for common haskell types, a wide array of combinators for working them, and more exotic functionality, (e.g. getters, setters, indexed folds, isomorphisms). -

    Modules

    \ No newline at end of file +

    Modules

    \ No newline at end of file diff --git a/lens.haddock b/lens.haddock index c22ee0a0b..1abe299ed 100644 Binary files a/lens.haddock and b/lens.haddock differ diff --git a/mini_Control-Lens-At.html b/mini_Control-Lens-At.html index 44f57c1c2..94aef83fe 100644 --- a/mini_Control-Lens-At.html +++ b/mini_Control-Lens-At.html @@ -3,6 +3,6 @@ //]]>

    Control.Lens.At

    Contains

    class Contains f m

    Ixed -

    type family Value m :: *

    class Ixed f m

    At +

    type family IxValue m :: *

    class Ixed f m

    At

    class At m

    Deprecated

    \ No newline at end of file diff --git a/mini_Control-Lens-Internal-Deque.html b/mini_Control-Lens-Internal-Deque.html new file mode 100644 index 000000000..18a3055d0 --- /dev/null +++ b/mini_Control-Lens-Internal-Deque.html @@ -0,0 +1,4 @@ +Control.Lens.Internal.Deque

    Control.Lens.Internal.Deque

    \ No newline at end of file diff --git a/mini_Numeric-Lens.html b/mini_Numeric-Lens.html index 2eb42595c..268d3a67c 100644 --- a/mini_Numeric-Lens.html +++ b/mini_Numeric-Lens.html @@ -1,4 +1,4 @@ Numeric.Lens

    Numeric.Lens

    \ No newline at end of file +

    Numeric.Lens

    \ No newline at end of file diff --git a/src/Control-Lens-At.html b/src/Control-Lens-At.html index 6ab212b35..44ca081c8 100644 --- a/src/Control-Lens-At.html +++ b/src/Control-Lens-At.html @@ -43,7 +43,7 @@ Contains(..) , containsIx, containsAt, containsLength, containsN, containsTest, containsLookup -- * Ixed - , Value + , IxValue , Ixed(ix) , ixAt, ixEach -- * At @@ -94,7 +94,7 @@ -- >>> let g :: Expr -> Expr; g = Debug.SimpleReflect.Vars.g -- | A deprecated alias for 'ix'. -_at, resultAt :: Ixed f m => Index m -> IndexedLensLike' (Index m) f m (Value m) +_at, resultAt :: Ixed f m => Index m -> IndexedLensLike' (Index m) f m (IxValue m) _at = ix resultAt = ix {-# DEPRECATED _at, resultAt "use 'ix'. This function will be removed in version 3.9" #-} @@ -280,11 +280,11 @@ contains = containsTest $ \i s -> not (LazyB.null (LazyB.drop i s)) {-# INLINE contains #-} -type family Value (m :: *) :: * +type family IxValue (m :: *) :: * -- | This simple 'IndexedTraversal' lets you 'traverse' the value at a given -- key in a 'Map' or element at an ordinal position in a list or 'Seq'. -class (Functor f, Contains (Accessor (Value m)) m) => Ixed f m where +class (Functor f, Contains (Accessor (IxValue m)) m) => Ixed f m where -- | This simple 'IndexedTraversal' lets you 'traverse' the value at a given -- key in a 'Map' or element at an ordinal position in a list or 'Seq'. -- @@ -304,25 +304,25 @@ -- -- >>> Seq.fromList [] ^? ix 2 -- Nothing - ix :: Index m -> IndexedLensLike' (Index m) f m (Value m) + ix :: Index m -> IndexedLensLike' (Index m) f m (IxValue m) #ifdef DEFAULT_SIGNATURES - default ix :: (Applicative f, At m) => Index m -> IndexedLensLike' (Index m) f m (Value m) + default ix :: (Applicative f, At m) => Index m -> IndexedLensLike' (Index m) f m (IxValue m) ix = ixAt {-# INLINE ix #-} #endif -- | A definition of 'ix' for types with an 'At' instance. This is the default -- if you don't specify a definition for 'ix'. -ixAt :: (Applicative f, At m) => Index m -> IndexedLensLike' (Index m) f m (Value m) +ixAt :: (Applicative f, At m) => Index m -> IndexedLensLike' (Index m) f m (IxValue m) ixAt i = at i <. traverse {-# INLINE ixAt #-} -- | A definition of 'ix' for types with an 'Each' instance. -ixEach :: (Applicative f, Eq (Index m), Each f m m (Value m) (Value m)) => Index m -> IndexedLensLike' (Index m) f m (Value m) +ixEach :: (Applicative f, Eq (Index m), Each f m m (IxValue m) (IxValue m)) => Index m -> IndexedLensLike' (Index m) f m (IxValue m) ixEach i = each . Lens.index i {-# INLINE ixEach #-} -type instance Value [a] = a +type instance IxValue [a] = a instance Applicative f => Ixed f [a] where ix k f xs0 = go xs0 k where go [] _ = pure [] @@ -330,12 +330,12 @@ go (a:as) i = (a:) <$> (go as $! i - 1) {-# INLINE ix #-} -type instance Value (Identity a) = a +type instance IxValue (Identity a) = a instance Functor f => Ixed f (Identity a) where ix () f (Identity a) = Identity <$> Lens.indexed f () a {-# INLINE ix #-} -type instance Value (Tree a) = a +type instance IxValue (Tree a) = a instance Applicative f => Ixed f (Tree a) where ix xs0 f = go xs0 where go [] (Node a as) = Lens.indexed f xs0 a <&> \a' -> Node a' as @@ -345,35 +345,35 @@ goto _ [] _ = pure [] {-# INLINE ix #-} -type instance Value (Seq a) = a +type instance IxValue (Seq a) = a instance Applicative f => Ixed f (Seq a) where ix i f m | 0 <= i && i < Seq.length m = Lens.indexed f i (Seq.index m i) <&> \a -> Seq.update i a m | otherwise = pure m {-# INLINE ix #-} -type instance Value (IntMap a) = a +type instance IxValue (IntMap a) = a instance Applicative f => Ixed f (IntMap a) where ix k f m = case IntMap.lookup k m of Just v -> Lens.indexed f k v <&> \v' -> IntMap.insert k v' m Nothing -> pure m {-# INLINE ix #-} -type instance Value (Map k a) = a +type instance IxValue (Map k a) = a instance (Applicative f, Ord k) => Ixed f (Map k a) where ix k f m = case Map.lookup k m of Just v -> Lens.indexed f k v <&> \v' -> Map.insert k v' m Nothing -> pure m {-# INLINE ix #-} -type instance Value (HashMap k a) = a +type instance IxValue (HashMap k a) = a instance (Applicative f, Eq k, Hashable k) => Ixed f (HashMap k a) where ix k f m = case HashMap.lookup k m of Just v -> Lens.indexed f k v <&> \v' -> HashMap.insert k v' m Nothing -> pure m {-# INLINE ix #-} -type instance Value (Array i e) = e +type instance IxValue (Array i e) = e -- | -- @ -- arr '!' i ≡ arr 'Control.Lens.Getter.^.' 'ix' i @@ -385,7 +385,7 @@ | otherwise = pure arr {-# INLINE ix #-} -type instance Value (UArray i e) = e +type instance IxValue (UArray i e) = e -- | -- @ -- arr '!' i ≡ arr 'Control.Lens.Getter.^.' 'ix' i @@ -397,35 +397,35 @@ | otherwise = pure arr {-# INLINE ix #-} -type instance Value (Vector.Vector a) = a +type instance IxValue (Vector.Vector a) = a instance Applicative f => Ixed f (Vector.Vector a) where ix i f v | 0 <= i && i < Vector.length v = Lens.indexed f i (v Vector.! i) <&> \a -> v Vector.// [(i, a)] | otherwise = pure v {-# INLINE ix #-} -type instance Value (Prim.Vector a) = a +type instance IxValue (Prim.Vector a) = a instance (Applicative f, Prim a) => Ixed f (Prim.Vector a) where ix i f v | 0 <= i && i < Prim.length v = Lens.indexed f i (v Prim.! i) <&> \a -> v Prim.// [(i, a)] | otherwise = pure v {-# INLINE ix #-} -type instance Value (Storable.Vector a) = a +type instance IxValue (Storable.Vector a) = a instance (Applicative f, Storable a) => Ixed f (Storable.Vector a) where ix i f v | 0 <= i && i < Storable.length v = Lens.indexed f i (v Storable.! i) <&> \a -> v Storable.// [(i, a)] | otherwise = pure v {-# INLINE ix #-} -type instance Value (Unboxed.Vector a) = a +type instance IxValue (Unboxed.Vector a) = a instance (Applicative f, Unbox a) => Ixed f (Unboxed.Vector a) where ix i f v | 0 <= i && i < Unboxed.length v = Lens.indexed f i (v Unboxed.! i) <&> \a -> v Unboxed.// [(i, a)] | otherwise = pure v {-# INLINE ix #-} -type instance Value StrictT.Text = Char +type instance IxValue StrictT.Text = Char instance Applicative f => Ixed f StrictT.Text where ix e f s = case StrictT.splitAt e s of (l, mr) -> case StrictT.uncons mr of @@ -433,7 +433,7 @@ Just (c, xs) -> Lens.indexed f e c <&> \d -> StrictT.concat [l, StrictT.singleton d, xs] {-# INLINE ix #-} -type instance Value LazyT.Text = Char +type instance IxValue LazyT.Text = Char instance Applicative f => Ixed f LazyT.Text where ix e f s = case LazyT.splitAt e s of (l, mr) -> case LazyT.uncons mr of @@ -441,7 +441,7 @@ Just (c, xs) -> Lens.indexed f e c <&> \d -> LazyT.append l (LazyT.cons d xs) {-# INLINE ix #-} -type instance Value StrictB.ByteString = Word8 +type instance IxValue StrictB.ByteString = Word8 instance Applicative f => Ixed f StrictB.ByteString where ix e f s = case StrictB.splitAt e s of (l, mr) -> case StrictB.uncons mr of @@ -449,7 +449,7 @@ Just (c, xs) -> Lens.indexed f e c <&> \d -> StrictB.concat [l, StrictB.singleton d, xs] {-# INLINE ix #-} -type instance Value LazyB.ByteString = Word8 +type instance IxValue LazyB.ByteString = Word8 instance Applicative f => Ixed f LazyB.ByteString where -- TODO: we could be lazier, returning each chunk as it is passed ix e f s = case LazyB.splitAt e s of @@ -459,13 +459,13 @@ {-# INLINE ix #-} -type instance Value (k -> a) = a +type instance IxValue (k -> a) = a instance (Functor f, Eq k) => Ixed f (k -> a) where ix e g f = Lens.indexed g e (f e) <&> \a' e' -> if e == e' then a' else f e' {-# INLINE ix #-} #if MIN_VERSION_base(4,4,0) -type instance Value (Complex a) = a +type instance IxValue (Complex a) = a instance Applicative f => Ixed f (Complex a) where ix = ixEach {-# INLINE ix #-} @@ -475,42 +475,42 @@ {-# INLINE ix #-} #endif -type instance Value (a,a) = a +type instance IxValue (a,a) = a instance (Applicative f, a ~ b) => Ixed f (a,b) where ix = ixEach {-# INLINE ix #-} -type instance Value (a,a,a) = a +type instance IxValue (a,a,a) = a instance (Applicative f, a ~ b, b ~ c) => Ixed f (a,b,c) where ix = ixEach {-# INLINE ix #-} -type instance Value (a,a,a,a) = a +type instance IxValue (a,a,a,a) = a instance (Applicative f, a ~ b, b ~ c, c ~ d) => Ixed f (a,b,c,d) where ix = ixEach {-# INLINE ix #-} -type instance Value (a,a,a,a,a) = a +type instance IxValue (a,a,a,a,a) = a instance (Applicative f, a ~ b, b ~ c, c ~ d, d ~ e) => Ixed f (a,b,c,d,e) where ix = ixEach {-# INLINE ix #-} -type instance Value (a,a,a,a,a,a) = a +type instance IxValue (a,a,a,a,a,a) = a instance (Applicative f, a ~ b, b ~ c, c ~ d, d ~ e, e ~ f') => Ixed f (a,b,c,d,e,f') where ix = ixEach {-# INLINE ix #-} -type instance Value (a,a,a,a,a,a,a) = a +type instance IxValue (a,a,a,a,a,a,a) = a instance (Applicative f, a ~ b, b ~ c, c ~ d, d ~ e, e ~ f', f' ~ g) => Ixed f (a,b,c,d,e,f',g) where ix = ixEach {-# INLINE ix #-} -type instance Value (a,a,a,a,a,a,a,a) = a +type instance IxValue (a,a,a,a,a,a,a,a) = a instance (Applicative f, a ~ b, b ~ c, c ~ d, d ~ e, e ~ f', f' ~ g, g ~ h) => Ixed f (a,b,c,d,e,f',g,h) where ix = ixEach {-# INLINE ix #-} -type instance Value (a,a,a,a,a,a,a,a,a) = a +type instance IxValue (a,a,a,a,a,a,a,a,a) = a instance (Applicative f, a ~ b, b ~ c, c ~ d, d ~ e, e ~ f', f' ~ g, g ~ h, h ~ i) => Ixed f (a,b,c,d,e,f',g,h,i) where ix = ixEach {-# INLINE ix #-} @@ -532,7 +532,7 @@ -- -- /Note:/ 'Map'-like containers form a reasonable instance, but not 'Array'-like ones, where -- you cannot satisfy the 'Lens' laws. - at :: Index m -> IndexedLens' (Index m) m (Maybe (Value m)) + at :: Index m -> IndexedLens' (Index m) m (Maybe (IxValue m)) instance At (IntMap a) where at k f m = Lens.indexed f k mv <&> \r -> case r of diff --git a/src/Control-Lens-Each.html b/src/Control-Lens-Each.html index 0b54f9ad3..d8936c894 100644 --- a/src/Control-Lens-Each.html +++ b/src/Control-Lens-Each.html @@ -40,265 +40,268 @@ ) where import Control.Applicative -import Control.Lens.Internal.Setter -import Control.Lens.Indexed as Lens -import Control.Lens.Iso -import Control.Lens.Type -import Control.Lens.Traversal -import Data.Array.Unboxed as Unboxed -import Data.Array.IArray as IArray -import Data.ByteString as StrictB -import Data.ByteString.Lazy as LazyB -import Data.Complex -import Data.Functor.Identity -import Data.HashMap.Lazy as HashMap -import Data.HashSet -import Data.Int -import Data.IntMap as IntMap -import Data.IntSet -import Data.Map as Map -import Data.Set -import Data.Sequence as Seq -import Data.Text as StrictT -import Data.Text.Lazy as LazyT -import Data.Traversable -import Data.Tree as Tree -import qualified Data.Vector as Vector -import qualified Data.Vector.Primitive as Prim -import Data.Vector.Primitive (Prim) -import qualified Data.Vector.Storable as Storable -import Data.Vector.Storable (Storable) -import qualified Data.Vector.Unboxed as Unboxed -import Data.Vector.Unboxed (Unbox) -import Data.Word - -type family Index (s :: *) :: * -type instance Index (e -> a) = e -type instance Index IntSet = Int -type instance Index (Set a) = a -type instance Index (HashSet a) = a -type instance Index [a] = Int -type instance Index (Seq a) = Int -type instance Index (a,b) = Int -type instance Index (a,b,c) = Int -type instance Index (a,b,c,d) = Int -type instance Index (a,b,c,d,e) = Int -type instance Index (a,b,c,d,e,f) = Int -type instance Index (a,b,c,d,e,f,g) = Int -type instance Index (a,b,c,d,e,f,g,h) = Int -type instance Index (a,b,c,d,e,f,g,h,i) = Int -type instance Index (IntMap a) = Int -type instance Index (Map k a) = k -type instance Index (HashMap k a) = k -type instance Index (Array i e) = i -type instance Index (UArray i e) = i -type instance Index (Vector.Vector a) = Int -type instance Index (Prim.Vector a) = Int -type instance Index (Storable.Vector a) = Int -type instance Index (Unboxed.Vector a) = Int -type instance Index (Complex a) = Int -type instance Index (Identity a) = () -type instance Index (Maybe a) = () -type instance Index (Tree a) = [Int] -type instance Index StrictT.Text = Int -type instance Index LazyT.Text = Int64 -type instance Index StrictB.ByteString = Int -type instance Index LazyB.ByteString = Int64 - --- $setup --- >>> import Control.Lens --- >>> import Data.Text.Strict.Lens as Text --- >>> import Data.Char as Char - --- | Extract 'each' element of a (potentially monomorphic) container. --- --- Notably, when applied to a tuple, this generalizes 'Control.Lens.Traversal.both' to arbitrary homogeneous tuples. --- --- >>> (1,2,3) & each *~ 10 --- (10,20,30) +import Control.Lens.Cons as Lens +import Control.Lens.Internal.Deque +import Control.Lens.Internal.Setter +import Control.Lens.Indexed as Lens +import Control.Lens.Iso +import Control.Lens.Type +import Control.Lens.Traversal +import Data.Array.Unboxed as Unboxed +import Data.Array.IArray as IArray +import Data.ByteString as StrictB +import Data.ByteString.Lazy as LazyB +import Data.Complex +import Data.Foldable as Foldable +import Data.Functor.Identity +import Data.HashMap.Lazy as HashMap +import Data.HashSet +import Data.Int +import Data.IntMap as IntMap +import Data.IntSet +import Data.Map as Map +import Data.Set +import Data.Sequence as Seq +import Data.Text as StrictT +import Data.Text.Lazy as LazyT +import Data.Traversable +import Data.Tree as Tree +import qualified Data.Vector as Vector +import qualified Data.Vector.Primitive as Prim +import Data.Vector.Primitive (Prim) +import qualified Data.Vector.Storable as Storable +import Data.Vector.Storable (Storable) +import qualified Data.Vector.Unboxed as Unboxed +import Data.Vector.Unboxed (Unbox) +import Data.Word + +type family Index (s :: *) :: * +type instance Index (e -> a) = e +type instance Index IntSet = Int +type instance Index (Set a) = a +type instance Index (HashSet a) = a +type instance Index [a] = Int +type instance Index (Seq a) = Int +type instance Index (a,b) = Int +type instance Index (a,b,c) = Int +type instance Index (a,b,c,d) = Int +type instance Index (a,b,c,d,e) = Int +type instance Index (a,b,c,d,e,f) = Int +type instance Index (a,b,c,d,e,f,g) = Int +type instance Index (a,b,c,d,e,f,g,h) = Int +type instance Index (a,b,c,d,e,f,g,h,i) = Int +type instance Index (IntMap a) = Int +type instance Index (Map k a) = k +type instance Index (HashMap k a) = k +type instance Index (Array i e) = i +type instance Index (UArray i e) = i +type instance Index (Vector.Vector a) = Int +type instance Index (Prim.Vector a) = Int +type instance Index (Storable.Vector a) = Int +type instance Index (Unboxed.Vector a) = Int +type instance Index (Complex a) = Int +type instance Index (Identity a) = () +type instance Index (Maybe a) = () +type instance Index (Tree a) = [Int] +type instance Index StrictT.Text = Int +type instance Index LazyT.Text = Int64 +type instance Index StrictB.ByteString = Int +type instance Index LazyB.ByteString = Int64 + +-- $setup +-- >>> import Control.Lens +-- >>> import Data.Text.Strict.Lens as Text +-- >>> import Data.Char as Char + +-- | Extract 'each' element of a (potentially monomorphic) container. +-- +-- Notably, when applied to a tuple, this generalizes 'Control.Lens.Traversal.both' to arbitrary homogeneous tuples. -- --- It can also be used on monomorphic containers like 'StrictT.Text' or 'StrictB.ByteString'. --- --- >>> over each Char.toUpper ("hello"^.Text.packed) --- "HELLO" +-- >>> (1,2,3) & each *~ 10 +-- (10,20,30) +-- +-- It can also be used on monomorphic containers like 'StrictT.Text' or 'StrictB.ByteString'. -- --- 'each' is an 'IndexedTraversal', so it can be used to access keys in many containers: --- --- >>> itoListOf each $ Map.fromList [("hello",2),("world",4)] --- [("hello",2),("world",4)] +-- >>> over each Char.toUpper ("hello"^.Text.packed) +-- "HELLO" +-- +-- 'each' is an 'IndexedTraversal', so it can be used to access keys in many containers: -- --- >>> ("hello","world") & each.each %~ Char.toUpper --- ("HELLO","WORLD") -class (Functor f, Index s ~ Index t) => Each f s t a b | s -> a, t -> b, s b -> t, t a -> s where - each :: IndexedLensLike (Index s) f s t a b -#ifdef DEFAULT_SIGNATURES - default each :: (Applicative f, Traversable g, s ~ g a, t ~ g b, Index s ~ Int, Index t ~ Int) => IndexedLensLike Int f s t a b - each = traversed - {-# INLINE each #-} -#endif - --- | @'each' :: 'IndexedTraversal' 'Int' (a,a) (b,b) a b@ -instance (Applicative f, a~a', b~b') => Each f (a,a') (b,b') a b where - each f ~(a,b) = (,) <$> f' (0 :: Int) a <*> f' 1 b - where f' = Lens.indexed f - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int' (a,a,a) (b,b,b) a b@ -instance (Applicative f, a~a2, a~a3, b~b2, b~b3) => Each f (a,a2,a3) (b,b2,b3) a b where - each f ~(a,b,c) = (,,) <$> f' (0 :: Int) a <*> f' 1 b <*> f' 2 c - where f' = Lens.indexed f - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int' (a,a,a,a) (b,b,b,b) a b@ -instance (Applicative f, a~a2, a~a3, a~a4, b~b2, b~b3, b~b4) => Each f (a,a2,a3,a4) (b,b2,b3,b4) a b where - each f ~(a,b,c,d) = (,,,) <$> f' (0 :: Int) a <*> f' 1 b <*> f' 2 c <*> f' 3 d - where f' = Lens.indexed f - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int' (a,a,a,a,a) (b,b,b,b,b) a b@ -instance (Applicative f, a~a2, a~a3, a~a4, a~a5, b~b2, b~b3, b~b4, b~b5) => Each f (a,a2,a3,a4,a5) (b,b2,b3,b4,b5) a b where - each f ~(a,b,c,d,e) = (,,,,) <$> f' (0 :: Int) a <*> f' 1 b <*> f' 2 c <*> f' 3 d <*> f' 4 e - where f' = Lens.indexed f - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int' (a,a,a,a,a,a) (b,b,b,b,b,b) a b@ -instance (Applicative f, a~a2, a~a3, a~a4, a~a5, a~a6, b~b2, b~b3, b~b4, b~b5, b~b6) => Each f (a,a2,a3,a4,a5,a6) (b,b2,b3,b4,b5,b6) a b where - each f ~(a,b,c,d,e,g) = (,,,,,) <$> f' (0 :: Int) a <*> f' 1 b <*> f' 2 c <*> f' 3 d <*> f' 4 e <*> f' 5 g - where f' = Lens.indexed f - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int' (a,a,a,a,a,a,a) (b,b,b,b,b,b,b) a b@ -instance (Applicative f, a~a2, a~a3, a~a4, a~a5, a~a6, a~a7, b~b2, b~b3, b~b4, b~b5, b~b6, b~b7) => Each f (a,a2,a3,a4,a5,a6,a7) (b,b2,b3,b4,b5,b6,b7) a b where - each f ~(a,b,c,d,e,g,h) = (,,,,,,) <$> f' (0 :: Int) a <*> f' 1 b <*> f' 2 c <*> f' 3 d <*> f' 4 e <*> f' 5 g <*> f' 6 h - where f' = Lens.indexed f - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int' (a,a,a,a,a,a,a,a) (b,b,b,b,b,b,b,b) a b@ -instance (Applicative f, a~a2, a~a3, a~a4, a~a5, a~a6, a~a7, a~a8, b~b2, b~b3, b~b4, b~b5, b~b6, b~b7, b~b8) => Each f (a,a2,a3,a4,a5,a6,a7,a8) (b,b2,b3,b4,b5,b6,b7,b8) a b where - each f ~(a,b,c,d,e,g,h,i) = (,,,,,,,) <$> f' (0 :: Int) a <*> f' 1 b <*> f' 2 c <*> f' 3 d <*> f' 4 e <*> f' 5 g <*> f' 6 h <*> f' 7 i - where f' = Lens.indexed f - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int' (a,a,a,a,a,a,a,a,a) (b,b,b,b,b,b,b,b,b) a b@ -instance (Applicative f, a~a2, a~a3, a~a4, a~a5, a~a6, a~a7, a~a8, a~a9, b~b2, b~b3, b~b4, b~b5, b~b6, b~b7, b~b8, b~b9) => Each f (a,a2,a3,a4,a5,a6,a7,a8,a9) (b,b2,b3,b4,b5,b6,b7,b8,b9) a b where - each f ~(a,b,c,d,e,g,h,i,j) = (,,,,,,,,) <$> f' (0 :: Int) a <*> f' 1 b <*> f' 2 c <*> f' 3 d <*> f' 4 e <*> f' 5 g <*> f' 6 h <*> f' 7 i <*> f' 8 j - where f' = Lens.indexed f - {-# INLINE each #-} - -#if MIN_VERSION_base(4,4,0) --- | @'each' :: ('RealFloat' a, 'RealFloat' b) => 'IndexedTraversal' 'Int' ('Complex' a) ('Complex' b) a b@ -instance Applicative f => Each f (Complex a) (Complex b) a b where - each f (a :+ b) = (:+) <$> f' (0 :: Int) a <*> f' (1 :: Int) b - where f' = Lens.indexed f - {-# INLINE each #-} -#else --- | @'each' :: 'IndexedTraversal' 'Int' ('Complex' a) ('Complex' b) a b@ -instance (Applicative f, RealFloat a, RealFloat b) => Each f (Complex a) (Complex b) a b where - each f (a :+ b) = (:+) <$> f' (0 :: Int) a <*> f' 1 b - where f' = Lens.indexed f - {-# INLINE each #-} -#endif - --- | @'each' :: 'IndexedTraversal' c ('Map' c a) ('Map' c b) a b@ -instance Applicative f => Each f (Map c a) (Map c b) a b where - each f m = sequenceA $ Map.mapWithKey f' m - where f' = Lens.indexed f - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int' ('Map' c a) ('Map' c b) a b@ -instance Applicative f => Each f (IntMap a) (IntMap b) a b where - each f m = sequenceA $ IntMap.mapWithKey f' m - where f' = Lens.indexed f - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' c ('HashMap' c a) ('HashMap' c b) a b@ -instance Applicative f => Each f (HashMap c a) (HashMap c b) a b where - each = HashMap.traverseWithKey . Lens.indexed - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int' [a] [b] a b@ -instance Applicative f => Each f [a] [b] a b where - each = traversed - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int' ('Identity' a) ('Identity' b) a b@ -instance Functor f => Each f (Identity a) (Identity b) a b where - each f (Identity a) = Identity <$> Lens.indexed f () a - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int' ('Maybe' a) ('Maybe' b) a b@ -instance Applicative f => Each f (Maybe a) (Maybe b) a b where - each f (Just a) = Just <$> Lens.indexed f () a - each _ Nothing = pure Nothing - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int' ('Seq' a) ('Seq' b) a b@ -instance Applicative f => Each f (Seq a) (Seq b) a b where - each = traversed - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' ['Int'] ('Tree' a) ('Tree' b) a b@ -instance Applicative f => Each f (Tree a) (Tree b) a b where - each pafb = go [] where -- TODO use a banker's deque to calculate a running reversal more efficiently? - go is (Node a as) = Node <$> Lens.indexed pafb (Prelude.reverse is) a <*> itraverse (\i n -> go (i:is) n) as - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int' ('Vector.Vector' a) ('Vector.Vector' b) a b@ -instance Applicative f => Each f (Vector.Vector a) (Vector.Vector b) a b where - each = traversed - {-# INLINE each #-} - --- | @'each' :: ('Prim' a, 'Prim' b) => 'IndexedTraversal' 'Int' ('Prim.Vector' a) ('Prim.Vector' b) a b@ -instance (Applicative f, Prim a, Prim b) => Each f (Prim.Vector a) (Prim.Vector b) a b where - each f v = Prim.fromListN (Prim.length v) <$> traversed (Indexed f') (Prim.toList v) - where f' = Lens.indexed f - {-# INLINE each #-} - --- | @'each' :: ('Storable' a, 'Storable' b) => 'IndexedTraversal' 'Int' ('Storable.Vector' a) ('Storable.Vector' b) a b@ -instance (Applicative f, Storable a, Storable b) => Each f (Storable.Vector a) (Storable.Vector b) a b where - each f v = Storable.fromListN (Storable.length v) <$> traversed (Indexed f') (Storable.toList v) - where f' = Lens.indexed f - {-# INLINE each #-} - --- | @'each' :: ('Unbox' a, 'Unbox' b) => 'IndexedTraversal' 'Int' ('Unboxed.Vector' a) ('Unboxed.Vector' b) a b@ -instance (Applicative f, Unbox a, Unbox b) => Each f (Unboxed.Vector a) (Unboxed.Vector b) a b where - each f v = Unboxed.fromListN (Unboxed.length v) <$> traversed (Indexed f') (Unboxed.toList v) - where f' = Lens.indexed f - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int' 'StrictT.Text' 'StrictT.Text' 'Char' 'Char'@ -instance Applicative f => Each f StrictT.Text StrictT.Text Char Char where - each = iso StrictT.unpack StrictT.pack . traversed - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int64' 'LazyT.Text' 'LazyT.Text' 'Char' 'Char'@ -instance Applicative f => Each f LazyT.Text LazyT.Text Char Char where - each = iso LazyT.unpack LazyT.pack . traversed64 - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int' 'StrictB.ByteString' 'StrictB.ByteString' 'Char' 'Char'@ -instance Applicative f => Each f StrictB.ByteString StrictB.ByteString Word8 Word8 where - each = iso StrictB.unpack StrictB.pack . traversed - {-# INLINE each #-} - --- | @'each' :: 'IndexedTraversal' 'Int64' 'LazyB.ByteString' 'LazyB.ByteString' 'Char' 'Char'@ -instance Applicative f => Each f LazyB.ByteString LazyB.ByteString Word8 Word8 where - each = iso LazyB.unpack LazyB.pack . traversed64 - {-# INLINE each #-} - --- | @'each' :: 'Ix' i => 'IndexedTraversal' i ('Array' i a) ('Array' i b) a b@ -instance (Applicative f, Ix i) => Each f (Array i a) (Array i b) a b where - each f arr = array (bounds arr) <$> traverse (\(i,a) -> (,) i <$> Lens.indexed f i a) (IArray.assocs arr) - {-# INLINE each #-} - --- | @'each' :: ('Ix' i, 'IArray' 'UArray' a, 'IArray' 'UArray' b) => 'IndexedTraversal' i ('Array' i a) ('Array' i b) a b@ -instance (Applicative f, Ix i, IArray UArray a, IArray UArray b) => Each f (UArray i a) (UArray i b) a b where - each f arr = array (bounds arr) <$> traverse (\(i,a) -> (,) i <$> Lens.indexed f i a) (IArray.assocs arr) - {-# INLINE each #-} - --- | @'each' :: 'Control.Lens.IndexedSetter.IndexedSetter' i (i -> a) (i -> b) a b@ -instance Settable f => Each f (i -> a) (i -> b) a b where - each f g = pure (\i -> untaintedDot (Lens.indexed f i) (g i)) - {-# INLINE each #-} +-- >>> itoListOf each $ Map.fromList [("hello",2),("world",4)] +-- [("hello",2),("world",4)] +-- +-- >>> ("hello","world") & each.each %~ Char.toUpper +-- ("HELLO","WORLD") +class (Functor f, Index s ~ Index t) => Each f s t a b | s -> a, t -> b, s b -> t, t a -> s where + each :: IndexedLensLike (Index s) f s t a b +#ifdef DEFAULT_SIGNATURES + default each :: (Applicative f, Traversable g, s ~ g a, t ~ g b, Index s ~ Int, Index t ~ Int) => IndexedLensLike Int f s t a b + each = traversed + {-# INLINE each #-} +#endif + +-- | @'each' :: 'IndexedTraversal' 'Int' (a,a) (b,b) a b@ +instance (Applicative f, a~a', b~b') => Each f (a,a') (b,b') a b where + each f ~(a,b) = (,) <$> f' (0 :: Int) a <*> f' 1 b + where f' = Lens.indexed f + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int' (a,a,a) (b,b,b) a b@ +instance (Applicative f, a~a2, a~a3, b~b2, b~b3) => Each f (a,a2,a3) (b,b2,b3) a b where + each f ~(a,b,c) = (,,) <$> f' (0 :: Int) a <*> f' 1 b <*> f' 2 c + where f' = Lens.indexed f + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int' (a,a,a,a) (b,b,b,b) a b@ +instance (Applicative f, a~a2, a~a3, a~a4, b~b2, b~b3, b~b4) => Each f (a,a2,a3,a4) (b,b2,b3,b4) a b where + each f ~(a,b,c,d) = (,,,) <$> f' (0 :: Int) a <*> f' 1 b <*> f' 2 c <*> f' 3 d + where f' = Lens.indexed f + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int' (a,a,a,a,a) (b,b,b,b,b) a b@ +instance (Applicative f, a~a2, a~a3, a~a4, a~a5, b~b2, b~b3, b~b4, b~b5) => Each f (a,a2,a3,a4,a5) (b,b2,b3,b4,b5) a b where + each f ~(a,b,c,d,e) = (,,,,) <$> f' (0 :: Int) a <*> f' 1 b <*> f' 2 c <*> f' 3 d <*> f' 4 e + where f' = Lens.indexed f + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int' (a,a,a,a,a,a) (b,b,b,b,b,b) a b@ +instance (Applicative f, a~a2, a~a3, a~a4, a~a5, a~a6, b~b2, b~b3, b~b4, b~b5, b~b6) => Each f (a,a2,a3,a4,a5,a6) (b,b2,b3,b4,b5,b6) a b where + each f ~(a,b,c,d,e,g) = (,,,,,) <$> f' (0 :: Int) a <*> f' 1 b <*> f' 2 c <*> f' 3 d <*> f' 4 e <*> f' 5 g + where f' = Lens.indexed f + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int' (a,a,a,a,a,a,a) (b,b,b,b,b,b,b) a b@ +instance (Applicative f, a~a2, a~a3, a~a4, a~a5, a~a6, a~a7, b~b2, b~b3, b~b4, b~b5, b~b6, b~b7) => Each f (a,a2,a3,a4,a5,a6,a7) (b,b2,b3,b4,b5,b6,b7) a b where + each f ~(a,b,c,d,e,g,h) = (,,,,,,) <$> f' (0 :: Int) a <*> f' 1 b <*> f' 2 c <*> f' 3 d <*> f' 4 e <*> f' 5 g <*> f' 6 h + where f' = Lens.indexed f + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int' (a,a,a,a,a,a,a,a) (b,b,b,b,b,b,b,b) a b@ +instance (Applicative f, a~a2, a~a3, a~a4, a~a5, a~a6, a~a7, a~a8, b~b2, b~b3, b~b4, b~b5, b~b6, b~b7, b~b8) => Each f (a,a2,a3,a4,a5,a6,a7,a8) (b,b2,b3,b4,b5,b6,b7,b8) a b where + each f ~(a,b,c,d,e,g,h,i) = (,,,,,,,) <$> f' (0 :: Int) a <*> f' 1 b <*> f' 2 c <*> f' 3 d <*> f' 4 e <*> f' 5 g <*> f' 6 h <*> f' 7 i + where f' = Lens.indexed f + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int' (a,a,a,a,a,a,a,a,a) (b,b,b,b,b,b,b,b,b) a b@ +instance (Applicative f, a~a2, a~a3, a~a4, a~a5, a~a6, a~a7, a~a8, a~a9, b~b2, b~b3, b~b4, b~b5, b~b6, b~b7, b~b8, b~b9) => Each f (a,a2,a3,a4,a5,a6,a7,a8,a9) (b,b2,b3,b4,b5,b6,b7,b8,b9) a b where + each f ~(a,b,c,d,e,g,h,i,j) = (,,,,,,,,) <$> f' (0 :: Int) a <*> f' 1 b <*> f' 2 c <*> f' 3 d <*> f' 4 e <*> f' 5 g <*> f' 6 h <*> f' 7 i <*> f' 8 j + where f' = Lens.indexed f + {-# INLINE each #-} + +#if MIN_VERSION_base(4,4,0) +-- | @'each' :: ('RealFloat' a, 'RealFloat' b) => 'IndexedTraversal' 'Int' ('Complex' a) ('Complex' b) a b@ +instance Applicative f => Each f (Complex a) (Complex b) a b where + each f (a :+ b) = (:+) <$> f' (0 :: Int) a <*> f' (1 :: Int) b + where f' = Lens.indexed f + {-# INLINE each #-} +#else +-- | @'each' :: 'IndexedTraversal' 'Int' ('Complex' a) ('Complex' b) a b@ +instance (Applicative f, RealFloat a, RealFloat b) => Each f (Complex a) (Complex b) a b where + each f (a :+ b) = (:+) <$> f' (0 :: Int) a <*> f' 1 b + where f' = Lens.indexed f + {-# INLINE each #-} +#endif + +-- | @'each' :: 'IndexedTraversal' c ('Map' c a) ('Map' c b) a b@ +instance Applicative f => Each f (Map c a) (Map c b) a b where + each f m = sequenceA $ Map.mapWithKey f' m + where f' = Lens.indexed f + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int' ('Map' c a) ('Map' c b) a b@ +instance Applicative f => Each f (IntMap a) (IntMap b) a b where + each f m = sequenceA $ IntMap.mapWithKey f' m + where f' = Lens.indexed f + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' c ('HashMap' c a) ('HashMap' c b) a b@ +instance Applicative f => Each f (HashMap c a) (HashMap c b) a b where + each = HashMap.traverseWithKey . Lens.indexed + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int' [a] [b] a b@ +instance Applicative f => Each f [a] [b] a b where + each = traversed + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int' ('Identity' a) ('Identity' b) a b@ +instance Functor f => Each f (Identity a) (Identity b) a b where + each f (Identity a) = Identity <$> Lens.indexed f () a + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int' ('Maybe' a) ('Maybe' b) a b@ +instance Applicative f => Each f (Maybe a) (Maybe b) a b where + each f (Just a) = Just <$> Lens.indexed f () a + each _ Nothing = pure Nothing + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int' ('Seq' a) ('Seq' b) a b@ +instance Applicative f => Each f (Seq a) (Seq b) a b where + each = traversed + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' ['Int'] ('Tree' a) ('Tree' b) a b@ +instance Applicative f => Each f (Tree a) (Tree b) a b where + each pafb = go (BD 0 [] 0 []) where + go dq (Node a as) = Node <$> Lens.indexed pafb (Foldable.toList dq) a <*> itraverse (\i n -> go (Lens.snoc dq i) n) as + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int' ('Vector.Vector' a) ('Vector.Vector' b) a b@ +instance Applicative f => Each f (Vector.Vector a) (Vector.Vector b) a b where + each = traversed + {-# INLINE each #-} + +-- | @'each' :: ('Prim' a, 'Prim' b) => 'IndexedTraversal' 'Int' ('Prim.Vector' a) ('Prim.Vector' b) a b@ +instance (Applicative f, Prim a, Prim b) => Each f (Prim.Vector a) (Prim.Vector b) a b where + each f v = Prim.fromListN (Prim.length v) <$> traversed (Indexed f') (Prim.toList v) + where f' = Lens.indexed f + {-# INLINE each #-} + +-- | @'each' :: ('Storable' a, 'Storable' b) => 'IndexedTraversal' 'Int' ('Storable.Vector' a) ('Storable.Vector' b) a b@ +instance (Applicative f, Storable a, Storable b) => Each f (Storable.Vector a) (Storable.Vector b) a b where + each f v = Storable.fromListN (Storable.length v) <$> traversed (Indexed f') (Storable.toList v) + where f' = Lens.indexed f + {-# INLINE each #-} + +-- | @'each' :: ('Unbox' a, 'Unbox' b) => 'IndexedTraversal' 'Int' ('Unboxed.Vector' a) ('Unboxed.Vector' b) a b@ +instance (Applicative f, Unbox a, Unbox b) => Each f (Unboxed.Vector a) (Unboxed.Vector b) a b where + each f v = Unboxed.fromListN (Unboxed.length v) <$> traversed (Indexed f') (Unboxed.toList v) + where f' = Lens.indexed f + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int' 'StrictT.Text' 'StrictT.Text' 'Char' 'Char'@ +instance Applicative f => Each f StrictT.Text StrictT.Text Char Char where + each = iso StrictT.unpack StrictT.pack . traversed + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int64' 'LazyT.Text' 'LazyT.Text' 'Char' 'Char'@ +instance Applicative f => Each f LazyT.Text LazyT.Text Char Char where + each = iso LazyT.unpack LazyT.pack . traversed64 + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int' 'StrictB.ByteString' 'StrictB.ByteString' 'Char' 'Char'@ +instance Applicative f => Each f StrictB.ByteString StrictB.ByteString Word8 Word8 where + each = iso StrictB.unpack StrictB.pack . traversed + {-# INLINE each #-} + +-- | @'each' :: 'IndexedTraversal' 'Int64' 'LazyB.ByteString' 'LazyB.ByteString' 'Char' 'Char'@ +instance Applicative f => Each f LazyB.ByteString LazyB.ByteString Word8 Word8 where + each = iso LazyB.unpack LazyB.pack . traversed64 + {-# INLINE each #-} + +-- | @'each' :: 'Ix' i => 'IndexedTraversal' i ('Array' i a) ('Array' i b) a b@ +instance (Applicative f, Ix i) => Each f (Array i a) (Array i b) a b where + each f arr = array (bounds arr) <$> traverse (\(i,a) -> (,) i <$> Lens.indexed f i a) (IArray.assocs arr) + {-# INLINE each #-} + +-- | @'each' :: ('Ix' i, 'IArray' 'UArray' a, 'IArray' 'UArray' b) => 'IndexedTraversal' i ('Array' i a) ('Array' i b) a b@ +instance (Applicative f, Ix i, IArray UArray a, IArray UArray b) => Each f (UArray i a) (UArray i b) a b where + each f arr = array (bounds arr) <$> traverse (\(i,a) -> (,) i <$> Lens.indexed f i a) (IArray.assocs arr) + {-# INLINE each #-} + +-- | @'each' :: 'Control.Lens.IndexedSetter.IndexedSetter' i (i -> a) (i -> b) a b@ +instance Settable f => Each f (i -> a) (i -> b) a b where + each f g = pure (\i -> untaintedDot (Lens.indexed f i) (g i)) + {-# INLINE each #-} diff --git a/src/Control-Lens-Indexed.html b/src/Control-Lens-Indexed.html index 374085fe3..f5f77547a 100644 --- a/src/Control-Lens-Indexed.html +++ b/src/Control-Lens-Indexed.html @@ -12,623 +12,643 @@ {-# LANGUAGE Rank2Types #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE FunctionalDependencies #-} -#ifdef DEFAULT_SIGNATURES -{-# LANGUAGE DefaultSignatures #-} -#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 706 -#define MPTC_DEFAULTS -#endif +{-# LANGUAGE UndecidableInstances #-} +{-# LANGUAGE MultiParamTypeClasses #-} +{-# LANGUAGE FunctionalDependencies #-} +#ifdef DEFAULT_SIGNATURES +{-# LANGUAGE DefaultSignatures #-} +#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 706 +#define MPTC_DEFAULTS #endif -#ifdef TRUSTWORTHY -{-# LANGUAGE Trustworthy #-} -- vector, hashable -#endif - -#ifndef MIN_VERSION_containers -#define MIN_VERSION_containers(x,y,z) 1 -#endif -------------------------------------------------------------------------------- --- | --- Module : Control.Lens.Indexed --- Copyright : (C) 2012-13 Edward Kmett --- License : BSD-style (see the file LICENSE) --- Maintainer : Edward Kmett <ekmett@gmail.com> --- Stability : provisional --- Portability : Rank2Types --- --- (The classes in here need to be defined together for @DefaultSignatures@ to work.) -------------------------------------------------------------------------------- -module Control.Lens.Indexed - ( - -- * Indexing - Indexable(..) - , Conjoined(..) - , Indexed(..) - , (<.), (<.>), (.>) - , reindexed - , icompose - , indexing - , indexing64 - -- * Indexed Functors - , FunctorWithIndex(..) - , imapped - -- * Indexed Foldables - , FoldableWithIndex(..) - , ifolded - , ifolding - -- ** Indexed Foldable Combinators - , iany - , iall - , itraverse_ - , ifor_ - , imapM_ - , iforM_ - , iconcatMap - , ifind - , ifoldrM - , ifoldlM - , itoList - -- * Converting to Folds - , withIndex - , asIndex - -- * Restricting by Index - , indices - , index - -- * Indexed Traversables - , TraversableWithIndex(..) - , itraversed - -- * Indexed Traversable Combinators - , ifor - , imapM - , iforM - , imapAccumR - , imapAccumL - ) where - -import Control.Applicative -import Control.Applicative.Backwards -import Control.Monad (void, liftM) -import Control.Monad.Trans.State.Lazy as Lazy -import Control.Lens.Fold -import Control.Lens.Internal.Fold -import Control.Lens.Internal.Getter -import Control.Lens.Internal.Indexed -import Control.Lens.Internal.Level -import Control.Lens.Internal.Magma -import Control.Lens.Setter -import Control.Lens.Traversal -import Control.Lens.Type -import Data.Foldable -import Data.Functor.Identity -import Data.Hashable -import Data.HashMap.Lazy as HashMap -import Data.IntMap as IntMap -import Data.Map as Map -import Data.Monoid -import Data.Profunctor.Unsafe -import Data.Sequence hiding (index) -import Data.Traversable -import Data.Tuple (swap) -import Data.Vector (Vector) -import qualified Data.Vector as V - -infixr 9 <.>, <., .> +#endif +#ifdef TRUSTWORTHY +{-# LANGUAGE Trustworthy #-} -- vector, hashable +#endif + +#ifndef MIN_VERSION_containers +#define MIN_VERSION_containers(x,y,z) 1 +#endif +------------------------------------------------------------------------------- +-- | +-- Module : Control.Lens.Indexed +-- Copyright : (C) 2012-13 Edward Kmett +-- License : BSD-style (see the file LICENSE) +-- Maintainer : Edward Kmett <ekmett@gmail.com> +-- Stability : provisional +-- Portability : Rank2Types +-- +-- (The classes in here need to be defined together for @DefaultSignatures@ to work.) +------------------------------------------------------------------------------- +module Control.Lens.Indexed + ( + -- * Indexing + Indexable(..) + , Conjoined(..) + , Indexed(..) + , (<.), (<.>), (.>) + , reindexed + , icompose + , indexing + , indexing64 + -- * Indexed Functors + , FunctorWithIndex(..) + , imapped + -- * Indexed Foldables + , FoldableWithIndex(..) + , ifolded + , ifolding + -- ** Indexed Foldable Combinators + , iany + , iall + , itraverse_ + , ifor_ + , imapM_ + , iforM_ + , iconcatMap + , ifind + , ifoldrM + , ifoldlM + , itoList + -- * Converting to Folds + , withIndex + , asIndex + -- * Restricting by Index + , indices + , index + -- * Indexed Traversables + , TraversableWithIndex(..) + , itraversed + -- * Indexed Traversable Combinators + , ifor + , imapM + , iforM + , imapAccumR + , imapAccumL + ) where + +import Control.Applicative +import Control.Applicative.Backwards +import Control.Monad (void, liftM) +import Control.Monad.Trans.State.Lazy as Lazy +import Control.Lens.Fold +import Control.Lens.Internal.Fold +import Control.Lens.Internal.Getter +import Control.Lens.Internal.Indexed +import Control.Lens.Internal.Level +import Control.Lens.Internal.Magma +import Control.Lens.Setter +import Control.Lens.Traversal +import Control.Lens.Type +import Data.Foldable +import Data.Functor.Identity +import Data.Functor.Reverse +import Data.Hashable +import Data.HashMap.Lazy as HashMap +import Data.IntMap as IntMap +import Data.Map as Map +import Data.Monoid +import Data.Profunctor.Unsafe +import Data.Sequence hiding (index) +import Data.Traversable +import Data.Tuple (swap) +import Data.Vector (Vector) +import qualified Data.Vector as V --- $setup --- >>> import Control.Lens - --- | Compose an 'Indexed' function with a non-indexed function. --- --- Mnemonically, the @<@ points to the indexing we want to preserve. -(<.) :: Indexable i p => (Indexed i s t -> r) -> ((a -> b) -> s -> t) -> p a b -> r -(<.) f g h = f . Indexed $ g . indexed h -{-# INLINE (<.) #-} - --- | Compose a non-indexed function with an 'Indexed' function. --- --- Mnemonically, the @>@ points to the indexing we want to preserve. +infixr 9 <.>, <., .> + +-- $setup +-- >>> import Control.Lens + +-- | Compose an 'Indexed' function with a non-indexed function. +-- +-- Mnemonically, the @<@ points to the indexing we want to preserve. +(<.) :: Indexable i p => (Indexed i s t -> r) -> ((a -> b) -> s -> t) -> p a b -> r +(<.) f g h = f . Indexed $ g . indexed h +{-# INLINE (<.) #-} + +-- | Compose a non-indexed function with an 'Indexed' function. -- --- This is the same as @('.')@. @f '.' g@ gives you the index of @g@. -(.>) :: (st -> r) -> (kab -> st) -> kab -> r -(.>) = (.) -{-# INLINE (.>) #-} - --- (.>) :: Indexable i p => (b -> c) -> Indexed i a b -> p a c --- bc .> Indexed iab = indexed (bc . iab) - --- | Remap the index. -reindexed :: Indexable j p => (i -> j) -> (Indexed i a b -> r) -> p a b -> r -reindexed ij f g = f . Indexed $ indexed g . ij -{-# INLINE reindexed #-} - --- | Composition of 'Indexed' functions. --- --- Mnemonically, the @\<@ and @\>@ points to the fact that we want to preserve the indices. -(<.>) :: Indexable (i, j) p => (Indexed i s t -> r) -> (Indexed j a b -> s -> t) -> p a b -> r -f <.> g = icompose (,) f g -{-# INLINE (<.>) #-} - --- | Composition of 'Indexed' functions with a user supplied function for combining indices. -icompose :: Indexable p c => (i -> j -> p) -> (Indexed i s t -> r) -> (Indexed j a b -> s -> t) -> c a b -> r -icompose ijk istr jabst cab = istr . Indexed $ \i -> jabst . Indexed $ \j -> indexed cab $ ijk i j -{-# INLINE icompose #-} - -------------------------------------------------------------------------------- --- Converting to Folds +-- Mnemonically, the @>@ points to the indexing we want to preserve. +-- +-- This is the same as @('.')@. @f '.' g@ gives you the index of @g@. +(.>) :: (st -> r) -> (kab -> st) -> kab -> r +(.>) = (.) +{-# INLINE (.>) #-} + +-- (.>) :: Indexable i p => (b -> c) -> Indexed i a b -> p a c +-- bc .> Indexed iab = indexed (bc . iab) + +-- | Remap the index. +reindexed :: Indexable j p => (i -> j) -> (Indexed i a b -> r) -> p a b -> r +reindexed ij f g = f . Indexed $ indexed g . ij +{-# INLINE reindexed #-} + +-- | Composition of 'Indexed' functions. +-- +-- Mnemonically, the @\<@ and @\>@ points to the fact that we want to preserve the indices. +(<.>) :: Indexable (i, j) p => (Indexed i s t -> r) -> (Indexed j a b -> s -> t) -> p a b -> r +f <.> g = icompose (,) f g +{-# INLINE (<.>) #-} + +-- | Composition of 'Indexed' functions with a user supplied function for combining indices. +icompose :: Indexable p c => (i -> j -> p) -> (Indexed i s t -> r) -> (Indexed j a b -> s -> t) -> c a b -> r +icompose ijk istr jabst cab = istr . Indexed $ \i -> jabst . Indexed $ \j -> indexed cab $ ijk i j +{-# INLINE icompose #-} + ------------------------------------------------------------------------------- - --- | Fold a container with indices returning both the indices and the values. --- --- The result is only valid to compose in a 'Traversal', if you don't edit the --- index as edits to the index have no effect. -withIndex :: (Indexable i p, Functor f) => Overloading p (Indexed i) f s t (i, s) (j, t) -withIndex f = Indexed $ \i a -> snd <$> indexed f i (i, a) -{-# INLINE withIndex #-} - --- | When composed with an 'IndexedFold' or 'IndexedTraversal' this yields an --- ('Indexed') 'Fold' of the indices. -asIndex :: (Indexable i p, Functor f, Gettable f) => Overloading' p (Indexed i) f s i -asIndex f = Indexed $ \i _ -> coerce (indexed f i i) -{-# INLINE asIndex #-} - -------------------------------------------------------------------------------- --- Restricting by index +-- Converting to Folds +------------------------------------------------------------------------------- + +-- | Fold a container with indices returning both the indices and the values. +-- +-- The result is only valid to compose in a 'Traversal', if you don't edit the +-- index as edits to the index have no effect. +withIndex :: (Indexable i p, Functor f) => Overloading p (Indexed i) f s t (i, s) (j, t) +withIndex f = Indexed $ \i a -> snd <$> indexed f i (i, a) +{-# INLINE withIndex #-} + +-- | When composed with an 'IndexedFold' or 'IndexedTraversal' this yields an +-- ('Indexed') 'Fold' of the indices. +asIndex :: (Indexable i p, Functor f, Gettable f) => Overloading' p (Indexed i) f s i +asIndex f = Indexed $ \i _ -> coerce (indexed f i i) +{-# INLINE asIndex #-} + ------------------------------------------------------------------------------- - --- | This allows you to filter an 'IndexedFold', 'IndexedGetter', 'IndexedTraversal' or 'IndexedLens' based on a predicate --- on the indices. --- --- >>> ["hello","the","world","!!!"]^..traversed.indices even --- ["hello","world"] --- --- >>> over (traversed.indices (>0)) Prelude.reverse $ ["He","was","stressed","o_O"] --- ["He","saw","desserts","O_o"] -indices :: (Indexable i p, Applicative f) => (i -> Bool) -> Overloading' p (Indexed i) f a a -indices p f = Indexed $ \i a -> if p i then indexed f i a else pure a -{-# INLINE indices #-} - --- | This allows you to filter an 'IndexedFold', 'IndexedGetter', 'IndexedTraversal' or 'IndexedLens' based on an index. --- --- >>> ["hello","the","world","!!!"]^?traversed.index 2 --- Just "world" -index :: (Indexable i p, Eq i, Applicative f) => i -> Overloading' p (Indexed i) f a a -index j f = Indexed $ \i a -> if j == i then indexed f i a else pure a -{-# INLINE index #-} - - -------------------------------------------------------------------------------- --- FunctorWithIndex +-- Restricting by index +------------------------------------------------------------------------------- + +-- | This allows you to filter an 'IndexedFold', 'IndexedGetter', 'IndexedTraversal' or 'IndexedLens' based on a predicate +-- on the indices. +-- +-- >>> ["hello","the","world","!!!"]^..traversed.indices even +-- ["hello","world"] +-- +-- >>> over (traversed.indices (>0)) Prelude.reverse $ ["He","was","stressed","o_O"] +-- ["He","saw","desserts","O_o"] +indices :: (Indexable i p, Applicative f) => (i -> Bool) -> Overloading' p (Indexed i) f a a +indices p f = Indexed $ \i a -> if p i then indexed f i a else pure a +{-# INLINE indices #-} + +-- | This allows you to filter an 'IndexedFold', 'IndexedGetter', 'IndexedTraversal' or 'IndexedLens' based on an index. +-- +-- >>> ["hello","the","world","!!!"]^?traversed.index 2 +-- Just "world" +index :: (Indexable i p, Eq i, Applicative f) => i -> Overloading' p (Indexed i) f a a +index j f = Indexed $ \i a -> if j == i then indexed f i a else pure a +{-# INLINE index #-} + + ------------------------------------------------------------------------------- - --- | A 'Functor' with an additional index. --- --- Instances must satisfy a modified form of the 'Functor' laws: +-- FunctorWithIndex +------------------------------------------------------------------------------- + +-- | A 'Functor' with an additional index. -- --- @ --- 'imap' f '.' 'imap' g ≡ 'imap' (\\i -> f i '.' g i) --- 'imap' (\\_ a -> a) ≡ 'id' --- @ -class Functor f => FunctorWithIndex i f | f -> i where - -- | Map with access to the index. - imap :: (i -> a -> b) -> f a -> f b -#ifdef MPTC_DEFAULTS - default imap :: TraversableWithIndex i f => (i -> a -> b) -> f a -> f b - imap = iover itraversed - {-# INLINE imap #-} -#endif - --- | The 'IndexedSetter' for a 'FunctorWithIndex'. --- --- If you don't need access to the index, then 'mapped' is more flexible in what it accepts. -imapped :: FunctorWithIndex i f => IndexedSetter i (f a) (f b) a b -imapped = isets imap -{-# INLINE imapped #-} - -------------------------------------------------------------------------------- --- FoldableWithIndex +-- Instances must satisfy a modified form of the 'Functor' laws: +-- +-- @ +-- 'imap' f '.' 'imap' g ≡ 'imap' (\\i -> f i '.' g i) +-- 'imap' (\\_ a -> a) ≡ 'id' +-- @ +class Functor f => FunctorWithIndex i f | f -> i where + -- | Map with access to the index. + imap :: (i -> a -> b) -> f a -> f b +#ifdef MPTC_DEFAULTS + default imap :: TraversableWithIndex i f => (i -> a -> b) -> f a -> f b + imap = iover itraversed + {-# INLINE imap #-} +#endif + +-- | The 'IndexedSetter' for a 'FunctorWithIndex'. +-- +-- If you don't need access to the index, then 'mapped' is more flexible in what it accepts. +imapped :: FunctorWithIndex i f => IndexedSetter i (f a) (f b) a b +imapped = isets imap +{-# INLINE imapped #-} + ------------------------------------------------------------------------------- - --- | A container that supports folding with an additional index. -class Foldable f => FoldableWithIndex i f | f -> i where - -- - -- | Fold a container by mapping value to an arbitrary 'Monoid' with access to the index @i@. +-- FoldableWithIndex +------------------------------------------------------------------------------- + +-- | A container that supports folding with an additional index. +class Foldable f => FoldableWithIndex i f | f -> i where -- - -- When you don't need access to the index then 'foldMap' is more flexible in what it accepts. + -- | Fold a container by mapping value to an arbitrary 'Monoid' with access to the index @i@. -- - -- @'foldMap' ≡ 'ifoldMap' '.' 'const'@ - ifoldMap :: Monoid m => (i -> a -> m) -> f a -> m -#ifdef MPTC_DEFAULTS - default ifoldMap :: (TraversableWithIndex i f, Monoid m) => (i -> a -> m) -> f a -> m - ifoldMap = ifoldMapOf itraversed - {-# INLINE ifoldMap #-} -#endif - - -- | Right-associative fold of an indexed container with access to the index @i@. - -- - -- When you don't need access to the index then 'Data.Foldable.foldr' is more flexible in what it accepts. + -- When you don't need access to the index then 'foldMap' is more flexible in what it accepts. + -- + -- @'foldMap' ≡ 'ifoldMap' '.' 'const'@ + ifoldMap :: Monoid m => (i -> a -> m) -> f a -> m +#ifdef MPTC_DEFAULTS + default ifoldMap :: (TraversableWithIndex i f, Monoid m) => (i -> a -> m) -> f a -> m + ifoldMap = ifoldMapOf itraversed + {-# INLINE ifoldMap #-} +#endif + + -- | Right-associative fold of an indexed container with access to the index @i@. -- - -- @'Data.Foldable.foldr' ≡ 'ifoldr' '.' 'const'@ - ifoldr :: (i -> a -> b -> b) -> b -> f a -> b - ifoldr f z t = appEndo (ifoldMap (\i -> Endo #. f i) t) z - - -- | Left-associative fold of an indexed container with access to the index @i@. - -- - -- When you don't need access to the index then 'Data.Foldable.foldl' is more flexible in what it accepts. + -- When you don't need access to the index then 'Data.Foldable.foldr' is more flexible in what it accepts. + -- + -- @'Data.Foldable.foldr' ≡ 'ifoldr' '.' 'const'@ + ifoldr :: (i -> a -> b -> b) -> b -> f a -> b + ifoldr f z t = appEndo (ifoldMap (\i -> Endo #. f i) t) z + + -- | Left-associative fold of an indexed container with access to the index @i@. -- - -- @'Data.Foldable.foldl' ≡ 'ifoldl' '.' 'const'@ - ifoldl :: (i -> b -> a -> b) -> b -> f a -> b - ifoldl f z t = appEndo (getDual (ifoldMap (\i -> Dual #. Endo #. flip (f i)) t)) z - - -- | /Strictly/ fold right over the elements of a structure with access to the index @i@. - -- - -- When you don't need access to the index then 'foldr'' is more flexible in what it accepts. + -- When you don't need access to the index then 'Data.Foldable.foldl' is more flexible in what it accepts. + -- + -- @'Data.Foldable.foldl' ≡ 'ifoldl' '.' 'const'@ + ifoldl :: (i -> b -> a -> b) -> b -> f a -> b + ifoldl f z t = appEndo (getDual (ifoldMap (\i -> Dual #. Endo #. flip (f i)) t)) z + + -- | /Strictly/ fold right over the elements of a structure with access to the index @i@. -- - -- @'foldr'' ≡ 'ifoldr'' '.' 'const'@ - ifoldr' :: (i -> a -> b -> b) -> b -> f a -> b - ifoldr' f z0 xs = ifoldl f' id xs z0 - where f' i k x z = k $! f i x z - - -- | Fold over the elements of a structure with an index, associating to the left, but /strictly/. - -- - -- When you don't need access to the index then 'Control.Lens.Fold.foldlOf'' is more flexible in what it accepts. + -- When you don't need access to the index then 'foldr'' is more flexible in what it accepts. + -- + -- @'foldr'' ≡ 'ifoldr'' '.' 'const'@ + ifoldr' :: (i -> a -> b -> b) -> b -> f a -> b + ifoldr' f z0 xs = ifoldl f' id xs z0 + where f' i k x z = k $! f i x z + + -- | Fold over the elements of a structure with an index, associating to the left, but /strictly/. -- - -- @'Control.Lens.Fold.foldlOf'' l ≡ 'ifoldlOf'' l '.' 'const'@ - ifoldl' :: (i -> b -> a -> b) -> b -> f a -> b - ifoldl' f z0 xs = ifoldr f' id xs z0 - where f' i x k z = k $! f i z x - --- | The 'IndexedFold' of a 'FoldableWithIndex' container. -ifolded :: FoldableWithIndex i f => IndexedFold i (f a) a -ifolded f = coerce . getFolding . ifoldMap (\i -> Folding #. indexed f i) -{-# INLINE ifolded #-} - --- | Obtain a 'Fold' by lifting an operation that returns a 'Foldable' result. --- --- This can be useful to lift operations from @'Data.List'@ and elsewhere into a 'Fold'. -ifolding :: FoldableWithIndex i f => (s -> f a) -> IndexedFold i s a -ifolding sfa iagb = coerce . itraverse_ (indexed iagb) . sfa -{-# INLINE ifolding #-} - --- | Return whether or not any element in a container satisfies a predicate, with access to the index @i@. --- --- When you don't need access to the index then 'any' is more flexible in what it accepts. + -- When you don't need access to the index then 'Control.Lens.Fold.foldlOf'' is more flexible in what it accepts. + -- + -- @'Control.Lens.Fold.foldlOf'' l ≡ 'ifoldlOf'' l '.' 'const'@ + ifoldl' :: (i -> b -> a -> b) -> b -> f a -> b + ifoldl' f z0 xs = ifoldr f' id xs z0 + where f' i x k z = k $! f i z x + +-- | The 'IndexedFold' of a 'FoldableWithIndex' container. +ifolded :: FoldableWithIndex i f => IndexedFold i (f a) a +ifolded f = coerce . getFolding . ifoldMap (\i -> Folding #. indexed f i) +{-# INLINE ifolded #-} + +-- | Obtain a 'Fold' by lifting an operation that returns a 'Foldable' result. +-- +-- This can be useful to lift operations from @'Data.List'@ and elsewhere into a 'Fold'. +ifolding :: FoldableWithIndex i f => (s -> f a) -> IndexedFold i s a +ifolding sfa iagb = coerce . itraverse_ (indexed iagb) . sfa +{-# INLINE ifolding #-} + +-- | Return whether or not any element in a container satisfies a predicate, with access to the index @i@. -- --- @'any' ≡ 'iany' '.' 'const'@ -iany :: FoldableWithIndex i f => (i -> a -> Bool) -> f a -> Bool -iany f = getAny #. ifoldMap (\i -> Any #. f i) -{-# INLINE iany #-} - --- | Return whether or not all elements in a container satisfy a predicate, with access to the index @i@. --- --- When you don't need access to the index then 'all' is more flexible in what it accepts. +-- When you don't need access to the index then 'any' is more flexible in what it accepts. +-- +-- @'any' ≡ 'iany' '.' 'const'@ +iany :: FoldableWithIndex i f => (i -> a -> Bool) -> f a -> Bool +iany f = getAny #. ifoldMap (\i -> Any #. f i) +{-# INLINE iany #-} + +-- | Return whether or not all elements in a container satisfy a predicate, with access to the index @i@. -- --- @'all' ≡ 'iall' '.' 'const'@ -iall :: FoldableWithIndex i f => (i -> a -> Bool) -> f a -> Bool -iall f = getAll #. ifoldMap (\i -> All #. f i) -{-# INLINE iall #-} - --- | Traverse elements with access to the index @i@, discarding the results. --- --- When you don't need access to the index then 'traverse_' is more flexible in what it accepts. +-- When you don't need access to the index then 'all' is more flexible in what it accepts. +-- +-- @'all' ≡ 'iall' '.' 'const'@ +iall :: FoldableWithIndex i f => (i -> a -> Bool) -> f a -> Bool +iall f = getAll #. ifoldMap (\i -> All #. f i) +{-# INLINE iall #-} + +-- | Traverse elements with access to the index @i@, discarding the results. -- --- @'traverse_' l = 'itraverse' '.' 'const'@ -itraverse_ :: (FoldableWithIndex i t, Applicative f) => (i -> a -> f b) -> t a -> f () -itraverse_ f = getTraversed #. ifoldMap (\i -> Traversed #. void . f i) -{-# INLINE itraverse_ #-} - --- | Traverse elements with access to the index @i@, discarding the results (with the arguments flipped). --- --- @'ifor_' ≡ 'flip' 'itraverse_'@ +-- When you don't need access to the index then 'traverse_' is more flexible in what it accepts. +-- +-- @'traverse_' l = 'itraverse' '.' 'const'@ +itraverse_ :: (FoldableWithIndex i t, Applicative f) => (i -> a -> f b) -> t a -> f () +itraverse_ f = getTraversed #. ifoldMap (\i -> Traversed #. void . f i) +{-# INLINE itraverse_ #-} + +-- | Traverse elements with access to the index @i@, discarding the results (with the arguments flipped). -- --- When you don't need access to the index then 'for_' is more flexible in what it accepts. +-- @'ifor_' ≡ 'flip' 'itraverse_'@ -- --- @'for_' a ≡ 'ifor_' a '.' 'const'@ -ifor_ :: (FoldableWithIndex i t, Applicative f) => t a -> (i -> a -> f b) -> f () -ifor_ = flip itraverse_ -{-# INLINE ifor_ #-} - --- | Run monadic actions for each target of an 'IndexedFold' or 'Control.Lens.IndexedTraversal.IndexedTraversal' with access to the index, --- discarding the results. --- --- When you don't need access to the index then 'Control.Lens.Fold.mapMOf_' is more flexible in what it accepts. +-- When you don't need access to the index then 'for_' is more flexible in what it accepts. +-- +-- @'for_' a ≡ 'ifor_' a '.' 'const'@ +ifor_ :: (FoldableWithIndex i t, Applicative f) => t a -> (i -> a -> f b) -> f () +ifor_ = flip itraverse_ +{-# INLINE ifor_ #-} + +-- | Run monadic actions for each target of an 'IndexedFold' or 'Control.Lens.IndexedTraversal.IndexedTraversal' with access to the index, +-- discarding the results. -- --- @'mapM_' ≡ 'imapM' '.' 'const'@ -imapM_ :: (FoldableWithIndex i t, Monad m) => (i -> a -> m b) -> t a -> m () -imapM_ f = getSequenced #. ifoldMap (\i -> Sequenced #. liftM skip . f i) -{-# INLINE imapM_ #-} - --- | Run monadic actions for each target of an 'IndexedFold' or 'Control.Lens.IndexedTraversal.IndexedTraversal' with access to the index, --- discarding the results (with the arguments flipped). --- --- @'iforM_' ≡ 'flip' 'imapM_'@ +-- When you don't need access to the index then 'Control.Lens.Fold.mapMOf_' is more flexible in what it accepts. +-- +-- @'mapM_' ≡ 'imapM' '.' 'const'@ +imapM_ :: (FoldableWithIndex i t, Monad m) => (i -> a -> m b) -> t a -> m () +imapM_ f = getSequenced #. ifoldMap (\i -> Sequenced #. liftM skip . f i) +{-# INLINE imapM_ #-} + +-- | Run monadic actions for each target of an 'IndexedFold' or 'Control.Lens.IndexedTraversal.IndexedTraversal' with access to the index, +-- discarding the results (with the arguments flipped). -- --- When you don't need access to the index then 'Control.Lens.Fold.forMOf_' is more flexible in what it accepts. +-- @'iforM_' ≡ 'flip' 'imapM_'@ -- --- @'Control.Lens.Fold.forMOf_' l a ≡ 'iforMOf' l a '.' 'const'@ -iforM_ :: (FoldableWithIndex i t, Monad m) => t a -> (i -> a -> m b) -> m () -iforM_ = flip imapM_ -{-# INLINE iforM_ #-} - --- | Concatenate the results of a function of the elements of an indexed container with access to the index. --- --- When you don't need access to the index then 'concatMap' is more flexible in what it accepts. +-- When you don't need access to the index then 'Control.Lens.Fold.forMOf_' is more flexible in what it accepts. +-- +-- @'Control.Lens.Fold.forMOf_' l a ≡ 'iforMOf' l a '.' 'const'@ +iforM_ :: (FoldableWithIndex i t, Monad m) => t a -> (i -> a -> m b) -> m () +iforM_ = flip imapM_ +{-# INLINE iforM_ #-} + +-- | Concatenate the results of a function of the elements of an indexed container with access to the index. -- --- @ --- 'concatMap' ≡ 'iconcatMap' '.' 'const' --- 'iconcatMap' ≡ 'ifoldMap' --- @ -iconcatMap :: FoldableWithIndex i f => (i -> a -> [b]) -> f a -> [b] -iconcatMap = ifoldMap -{-# INLINE iconcatMap #-} - --- | Searches a container with a predicate that is also supplied the index, returning the left-most element of the structure --- matching the predicate, or 'Nothing' if there is no such element. --- --- When you don't need access to the index then 'find' is more flexible in what it accepts. +-- When you don't need access to the index then 'concatMap' is more flexible in what it accepts. +-- +-- @ +-- 'concatMap' ≡ 'iconcatMap' '.' 'const' +-- 'iconcatMap' ≡ 'ifoldMap' +-- @ +iconcatMap :: FoldableWithIndex i f => (i -> a -> [b]) -> f a -> [b] +iconcatMap = ifoldMap +{-# INLINE iconcatMap #-} + +-- | Searches a container with a predicate that is also supplied the index, returning the left-most element of the structure +-- matching the predicate, or 'Nothing' if there is no such element. -- --- @'find' ≡ 'ifind' '.' 'const'@ -ifind :: FoldableWithIndex i f => (i -> a -> Bool) -> f a -> Maybe (i, a) -ifind p = ifoldr (\i a y -> if p i a then Just (i, a) else y) Nothing -{-# INLINE ifind #-} - --- | Monadic fold right over the elements of a structure with an index. --- --- When you don't need access to the index then 'foldrM' is more flexible in what it accepts. +-- When you don't need access to the index then 'find' is more flexible in what it accepts. +-- +-- @'find' ≡ 'ifind' '.' 'const'@ +ifind :: FoldableWithIndex i f => (i -> a -> Bool) -> f a -> Maybe (i, a) +ifind p = ifoldr (\i a y -> if p i a then Just (i, a) else y) Nothing +{-# INLINE ifind #-} + +-- | Monadic fold right over the elements of a structure with an index. -- --- @'foldrM' ≡ 'ifoldrM' '.' 'const'@ -ifoldrM :: (FoldableWithIndex i f, Monad m) => (i -> a -> b -> m b) -> b -> f a -> m b -ifoldrM f z0 xs = ifoldl f' return xs z0 - where f' i k x z = f i x z >>= k -{-# INLINE ifoldrM #-} - --- | Monadic fold over the elements of a structure with an index, associating to the left. --- --- When you don't need access to the index then 'foldlM' is more flexible in what it accepts. +-- When you don't need access to the index then 'foldrM' is more flexible in what it accepts. +-- +-- @'foldrM' ≡ 'ifoldrM' '.' 'const'@ +ifoldrM :: (FoldableWithIndex i f, Monad m) => (i -> a -> b -> m b) -> b -> f a -> m b +ifoldrM f z0 xs = ifoldl f' return xs z0 + where f' i k x z = f i x z >>= k +{-# INLINE ifoldrM #-} + +-- | Monadic fold over the elements of a structure with an index, associating to the left. -- --- @'foldlM' ≡ 'ifoldlM' '.' 'const'@ -ifoldlM :: (FoldableWithIndex i f, Monad m) => (i -> b -> a -> m b) -> b -> f a -> m b -ifoldlM f z0 xs = ifoldr f' return xs z0 - where f' i x k z = f i z x >>= k -{-# INLINE ifoldlM #-} - --- | Extract the key-value pairs from a structure. --- --- When you don't need access to the indices in the result, then 'Data.Foldable.toList' is more flexible in what it accepts. +-- When you don't need access to the index then 'foldlM' is more flexible in what it accepts. +-- +-- @'foldlM' ≡ 'ifoldlM' '.' 'const'@ +ifoldlM :: (FoldableWithIndex i f, Monad m) => (i -> b -> a -> m b) -> b -> f a -> m b +ifoldlM f z0 xs = ifoldr f' return xs z0 + where f' i x k z = f i z x >>= k +{-# INLINE ifoldlM #-} + +-- | Extract the key-value pairs from a structure. -- --- @'Data.Foldable.toList' ≡ 'Data.List.map' 'fst' '.' 'itoList'@ -itoList :: FoldableWithIndex i f => f a -> [(i,a)] -itoList = ifoldr (\i c -> ((i,c):)) [] -{-# INLINE itoList #-} - -------------------------------------------------------------------------------- --- TraversableWithIndex +-- When you don't need access to the indices in the result, then 'Data.Foldable.toList' is more flexible in what it accepts. +-- +-- @'Data.Foldable.toList' ≡ 'Data.List.map' 'fst' '.' 'itoList'@ +itoList :: FoldableWithIndex i f => f a -> [(i,a)] +itoList = ifoldr (\i c -> ((i,c):)) [] +{-# INLINE itoList #-} + ------------------------------------------------------------------------------- - --- | A 'Traversable' with an additional index. --- --- An instance must satisfy a (modified) form of the 'Traversable' laws: +-- TraversableWithIndex +------------------------------------------------------------------------------- + +-- | A 'Traversable' with an additional index. -- --- @ --- 'itraverse' ('const' 'Identity') ≡ 'Identity' --- 'fmap' ('itraverse' f) '.' 'itraverse' g ≡ 'Data.Functor.Compose.getCompose' '.' 'itraverse' (\\i -> 'Data.Functor.Compose.Compose' '.' 'fmap' (f i) '.' g i) --- @ -class (FunctorWithIndex i t, FoldableWithIndex i t, Traversable t) => TraversableWithIndex i t | t -> i where - -- | Traverse an indexed container. - itraverse :: Applicative f => (i -> a -> f b) -> t a -> f (t b) -#ifdef MPTC_DEFAULTS - default itraverse :: Applicative f => (Int -> a -> f b) -> t a -> f (t b) - itraverse = traversed .# Indexed - {-# INLINE itraverse #-} -#endif - --- | The 'IndexedTraversal' of a 'TraversableWithIndex' container. -itraversed :: TraversableWithIndex i f => IndexedTraversal i (f a) (f b) a b -itraversed = itraverse . indexed -{-# INLINE itraversed #-} - --- | Traverse with an index (and the arguments flipped). --- --- @ --- 'for' a ≡ 'ifor' a '.' 'const' --- 'ifor' ≡ 'flip' 'itraverse' --- @ -ifor :: (TraversableWithIndex i t, Applicative f) => t a -> (i -> a -> f b) -> f (t b) -ifor = flip itraverse -{-# INLINE ifor #-} - --- | Map each element of a structure to a monadic action, --- evaluate these actions from left to right, and collect the results, with access --- the index. --- --- When you don't need access to the index 'mapM' is more liberal in what it can accept. +-- An instance must satisfy a (modified) form of the 'Traversable' laws: +-- +-- @ +-- 'itraverse' ('const' 'Identity') ≡ 'Identity' +-- 'fmap' ('itraverse' f) '.' 'itraverse' g ≡ 'Data.Functor.Compose.getCompose' '.' 'itraverse' (\\i -> 'Data.Functor.Compose.Compose' '.' 'fmap' (f i) '.' g i) +-- @ +class (FunctorWithIndex i t, FoldableWithIndex i t, Traversable t) => TraversableWithIndex i t | t -> i where + -- | Traverse an indexed container. + itraverse :: Applicative f => (i -> a -> f b) -> t a -> f (t b) +#ifdef MPTC_DEFAULTS + default itraverse :: Applicative f => (Int -> a -> f b) -> t a -> f (t b) + itraverse = traversed .# Indexed + {-# INLINE itraverse #-} +#endif + +-- | The 'IndexedTraversal' of a 'TraversableWithIndex' container. +itraversed :: TraversableWithIndex i f => IndexedTraversal i (f a) (f b) a b +itraversed = itraverse . indexed +{-# INLINE itraversed #-} + +-- | Traverse with an index (and the arguments flipped). +-- +-- @ +-- 'for' a ≡ 'ifor' a '.' 'const' +-- 'ifor' ≡ 'flip' 'itraverse' +-- @ +ifor :: (TraversableWithIndex i t, Applicative f) => t a -> (i -> a -> f b) -> f (t b) +ifor = flip itraverse +{-# INLINE ifor #-} + +-- | Map each element of a structure to a monadic action, +-- evaluate these actions from left to right, and collect the results, with access +-- the index. -- --- @'mapM' ≡ 'imapM' '.' 'const'@ -imapM :: (TraversableWithIndex i t, Monad m) => (i -> a -> m b) -> t a -> m (t b) -imapM f = unwrapMonad #. itraverse (\i -> WrapMonad #. f i) -{-# INLINE imapM #-} - --- | Map each element of a structure to a monadic action, --- evaluate these actions from left to right, and collect the results, with access --- its position (and the arguments flipped). --- --- @ --- 'forM' a ≡ 'iforM' a '.' 'const' --- 'iforM' ≡ 'flip' 'imapM' --- @ -iforM :: (TraversableWithIndex i t, Monad m) => t a -> (i -> a -> m b) -> m (t b) -iforM = flip imapM -{-# INLINE iforM #-} - --- | Generalizes 'Data.Traversable.mapAccumR' to add access to the index. --- --- 'imapAccumROf' accumulates state from right to left. +-- When you don't need access to the index 'mapM' is more liberal in what it can accept. +-- +-- @'mapM' ≡ 'imapM' '.' 'const'@ +imapM :: (TraversableWithIndex i t, Monad m) => (i -> a -> m b) -> t a -> m (t b) +imapM f = unwrapMonad #. itraverse (\i -> WrapMonad #. f i) +{-# INLINE imapM #-} + +-- | Map each element of a structure to a monadic action, +-- evaluate these actions from left to right, and collect the results, with access +-- its position (and the arguments flipped). +-- +-- @ +-- 'forM' a ≡ 'iforM' a '.' 'const' +-- 'iforM' ≡ 'flip' 'imapM' +-- @ +iforM :: (TraversableWithIndex i t, Monad m) => t a -> (i -> a -> m b) -> m (t b) +iforM = flip imapM +{-# INLINE iforM #-} + +-- | Generalizes 'Data.Traversable.mapAccumR' to add access to the index. -- --- @'Control.Lens.Traversal.mapAccumR' ≡ 'imapAccumR' '.' 'const'@ -imapAccumR :: TraversableWithIndex i t => (i -> s -> a -> (s, b)) -> s -> t a -> (s, t b) -imapAccumR f s0 a = swap (Lazy.runState (forwards (itraverse (\i c -> Backwards (Lazy.state (\s -> swap (f i s c)))) a)) s0) -{-# INLINE imapAccumR #-} - --- | Generalizes 'Data.Traversable.mapAccumL' to add access to the index. --- --- 'imapAccumLOf' accumulates state from left to right. +-- 'imapAccumROf' accumulates state from right to left. +-- +-- @'Control.Lens.Traversal.mapAccumR' ≡ 'imapAccumR' '.' 'const'@ +imapAccumR :: TraversableWithIndex i t => (i -> s -> a -> (s, b)) -> s -> t a -> (s, t b) +imapAccumR f s0 a = swap (Lazy.runState (forwards (itraverse (\i c -> Backwards (Lazy.state (\s -> swap (f i s c)))) a)) s0) +{-# INLINE imapAccumR #-} + +-- | Generalizes 'Data.Traversable.mapAccumL' to add access to the index. -- --- @'Control.Lens.Traversal.mapAccumLOf' ≡ 'imapAccumL' '.' 'const'@ -imapAccumL :: TraversableWithIndex i t => (i -> s -> a -> (s, b)) -> s -> t a -> (s, t b) -imapAccumL f s0 a = swap (Lazy.runState (itraverse (\i c -> Lazy.state (\s -> swap (f i s c))) a) s0) -{-# INLINE imapAccumL #-} - -------------------------------------------------------------------------------- --- Instances +-- 'imapAccumLOf' accumulates state from left to right. +-- +-- @'Control.Lens.Traversal.mapAccumLOf' ≡ 'imapAccumL' '.' 'const'@ +imapAccumL :: TraversableWithIndex i t => (i -> s -> a -> (s, b)) -> s -> t a -> (s, t b) +imapAccumL f s0 a = swap (Lazy.runState (itraverse (\i c -> Lazy.state (\s -> swap (f i s c))) a) s0) +{-# INLINE imapAccumL #-} + ------------------------------------------------------------------------------- - -instance FunctorWithIndex () Identity where - imap f (Identity a) = Identity (f () a) - -instance FoldableWithIndex () Identity where - ifoldMap f (Identity a) = f () a - -instance TraversableWithIndex () Identity where - itraverse f (Identity a) = Identity <$> f () a - -instance FunctorWithIndex k ((,) k) where - imap f (k,a) = (k, f k a) - {-# INLINE imap #-} - -instance FoldableWithIndex k ((,) k) where - ifoldMap = uncurry - {-# INLINE ifoldMap #-} +-- Instances +------------------------------------------------------------------------------- + +instance FunctorWithIndex i f => FunctorWithIndex i (Backwards f) where + imap f = Backwards . imap f . forwards + +instance FoldableWithIndex i f => FoldableWithIndex i (Backwards f) where + ifoldMap f = ifoldMap f . forwards + +instance TraversableWithIndex i f => TraversableWithIndex i (Backwards f) where + itraverse f = fmap Backwards . itraverse f . forwards + +instance FunctorWithIndex i f => FunctorWithIndex i (Reverse f) where + imap f = Reverse . imap f . getReverse + +instance FoldableWithIndex i f => FoldableWithIndex i (Reverse f) where + ifoldMap f = getDual . ifoldMap (\i -> Dual #. f i) . getReverse -instance TraversableWithIndex k ((,) k) where - itraverse f (k, a) = (,) k <$> f k a - {-# INLINE itraverse #-} - --- | The position in the list is available as the index. -instance FunctorWithIndex Int [] where - imap = iover itraversed - {-# INLINE imap #-} -instance FoldableWithIndex Int [] where - ifoldMap = ifoldMapOf itraversed - {-# INLINE ifoldMap #-} -instance TraversableWithIndex Int [] where - itraverse = itraverseOf traversed - {-# INLINE itraverse #-} - --- | The position in the 'Seq' is available as the index. -instance FunctorWithIndex Int Seq where - imap = iover itraversed - {-# INLINE imap #-} -instance FoldableWithIndex Int Seq where - ifoldMap = ifoldMapOf itraversed - {-# INLINE ifoldMap #-} -instance TraversableWithIndex Int Seq where - itraverse = itraverseOf traversed - {-# INLINE itraverse #-} - -instance FunctorWithIndex Int Vector where - imap = V.imap - {-# INLINE imap #-} -instance FoldableWithIndex Int Vector where - ifoldMap = ifoldMapOf itraversed - {-# INLINE ifoldMap #-} - ifoldr = V.ifoldr - ifoldl = V.ifoldl . flip - ifoldr' = V.ifoldr' - ifoldl' = V.ifoldl' . flip -instance TraversableWithIndex Int Vector where - itraverse f = sequenceA . V.imap f - {-# INLINE itraverse #-} - -instance FunctorWithIndex Int IntMap where - imap = iover itraversed - {-# INLINE imap #-} -instance FoldableWithIndex Int IntMap where - ifoldMap = ifoldMapOf itraversed - {-# INLINE ifoldMap #-} -instance TraversableWithIndex Int IntMap where -#if MIN_VERSION_containers(0,5,0) - itraverse = IntMap.traverseWithKey -#else - itraverse f = sequenceA . IntMap.mapWithKey f -#endif - {-# INLINE itraverse #-} - -instance FunctorWithIndex k (Map k) where - imap = iover itraversed - {-# INLINE imap #-} -instance FoldableWithIndex k (Map k) where - ifoldMap = ifoldMapOf itraversed - {-# INLINE ifoldMap #-} -instance TraversableWithIndex k (Map k) where -#if MIN_VERSION_containers(0,5,0) - itraverse = Map.traverseWithKey -#else - itraverse f = sequenceA . Map.mapWithKey f -#endif - {-# INLINE itraverse #-} - -instance (Eq k, Hashable k) => FunctorWithIndex k (HashMap k) where - imap = iover itraversed - {-# INLINE imap #-} -instance (Eq k, Hashable k) => FoldableWithIndex k (HashMap k) where - ifoldMap = ifoldMapOf itraversed - {-# INLINE ifoldMap #-} -instance (Eq k, Hashable k) => TraversableWithIndex k (HashMap k) where - itraverse = HashMap.traverseWithKey - {-# INLINE itraverse #-} - -instance FunctorWithIndex r ((->) r) where - imap f g x = f x (g x) - {-# INLINE imap #-} - -instance FunctorWithIndex i (Level i) where - imap f = go where - go (Two n l r) = Two n (go l) (go r) - go (One i a) = One i (f i a) - go Zero = Zero - {-# INLINE imap #-} - -instance FoldableWithIndex i (Level i) where - ifoldMap f = go where - go (Two _ l r) = go l `mappend` go r - go (One i a) = f i a - go Zero = mempty - {-# INLINE ifoldMap #-} - -instance TraversableWithIndex i (Level i) where - itraverse f = go where - go (Two n l r) = Two n <$> go l <*> go r - go (One i a) = One i <$> f i a - go Zero = pure Zero - {-# INLINE itraverse #-} - -instance FunctorWithIndex i (Magma i t b) where - imap f (MagmaAp x y) = MagmaAp (imap f x) (imap f y) - imap _ (MagmaPure x) = MagmaPure x - imap f (MagmaFmap xy x) = MagmaFmap xy (imap f x) - imap f (MagmaLeaf i a) = MagmaLeaf i (f i a) - {-# INLINE imap #-} - -instance FoldableWithIndex i (Magma i t b) where - ifoldMap f (MagmaAp x y) = ifoldMap f x `mappend` ifoldMap f y - ifoldMap _ MagmaPure{} = mempty - ifoldMap f (MagmaFmap _ x) = ifoldMap f x - ifoldMap f (MagmaLeaf i a) = f i a - {-# INLINE ifoldMap #-} - -instance TraversableWithIndex i (Magma i t b) where - itraverse f (MagmaAp x y) = MagmaAp <$> itraverse f x <*> itraverse f y - itraverse _ (MagmaPure x) = pure (MagmaPure x) - itraverse f (MagmaFmap xy x) = MagmaFmap xy <$> itraverse f x - itraverse f (MagmaLeaf i a) = MagmaLeaf i <$> f i a - {-# INLINE itraverse #-} - -------------------------------------------------------------------------------- --- Misc. -------------------------------------------------------------------------------- - -skip :: a -> () -skip _ = () -{-# INLINE skip #-} - +instance TraversableWithIndex i f => TraversableWithIndex i (Reverse f) where + itraverse f = fmap Reverse . forwards . itraverse (\i -> Backwards . f i) . getReverse + +instance FunctorWithIndex () Identity where + imap f (Identity a) = Identity (f () a) + +instance FoldableWithIndex () Identity where + ifoldMap f (Identity a) = f () a + +instance TraversableWithIndex () Identity where + itraverse f (Identity a) = Identity <$> f () a + +instance FunctorWithIndex k ((,) k) where + imap f (k,a) = (k, f k a) + {-# INLINE imap #-} + +instance FoldableWithIndex k ((,) k) where + ifoldMap = uncurry + {-# INLINE ifoldMap #-} + +instance TraversableWithIndex k ((,) k) where + itraverse f (k, a) = (,) k <$> f k a + {-# INLINE itraverse #-} + +-- | The position in the list is available as the index. +instance FunctorWithIndex Int [] where + imap = iover itraversed + {-# INLINE imap #-} +instance FoldableWithIndex Int [] where + ifoldMap = ifoldMapOf itraversed + {-# INLINE ifoldMap #-} +instance TraversableWithIndex Int [] where + itraverse = itraverseOf traversed + {-# INLINE itraverse #-} + +-- | The position in the 'Seq' is available as the index. +instance FunctorWithIndex Int Seq where + imap = iover itraversed + {-# INLINE imap #-} +instance FoldableWithIndex Int Seq where + ifoldMap = ifoldMapOf itraversed + {-# INLINE ifoldMap #-} +instance TraversableWithIndex Int Seq where + itraverse = itraverseOf traversed + {-# INLINE itraverse #-} + +instance FunctorWithIndex Int Vector where + imap = V.imap + {-# INLINE imap #-} +instance FoldableWithIndex Int Vector where + ifoldMap = ifoldMapOf itraversed + {-# INLINE ifoldMap #-} + ifoldr = V.ifoldr + ifoldl = V.ifoldl . flip + ifoldr' = V.ifoldr' + ifoldl' = V.ifoldl' . flip +instance TraversableWithIndex Int Vector where + itraverse f = sequenceA . V.imap f + {-# INLINE itraverse #-} + +instance FunctorWithIndex Int IntMap where + imap = iover itraversed + {-# INLINE imap #-} +instance FoldableWithIndex Int IntMap where + ifoldMap = ifoldMapOf itraversed + {-# INLINE ifoldMap #-} +instance TraversableWithIndex Int IntMap where +#if MIN_VERSION_containers(0,5,0) + itraverse = IntMap.traverseWithKey +#else + itraverse f = sequenceA . IntMap.mapWithKey f +#endif + {-# INLINE itraverse #-} + +instance FunctorWithIndex k (Map k) where + imap = iover itraversed + {-# INLINE imap #-} +instance FoldableWithIndex k (Map k) where + ifoldMap = ifoldMapOf itraversed + {-# INLINE ifoldMap #-} +instance TraversableWithIndex k (Map k) where +#if MIN_VERSION_containers(0,5,0) + itraverse = Map.traverseWithKey +#else + itraverse f = sequenceA . Map.mapWithKey f +#endif + {-# INLINE itraverse #-} + +instance (Eq k, Hashable k) => FunctorWithIndex k (HashMap k) where + imap = iover itraversed + {-# INLINE imap #-} +instance (Eq k, Hashable k) => FoldableWithIndex k (HashMap k) where + ifoldMap = ifoldMapOf itraversed + {-# INLINE ifoldMap #-} +instance (Eq k, Hashable k) => TraversableWithIndex k (HashMap k) where + itraverse = HashMap.traverseWithKey + {-# INLINE itraverse #-} + +instance FunctorWithIndex r ((->) r) where + imap f g x = f x (g x) + {-# INLINE imap #-} + +instance FunctorWithIndex i (Level i) where + imap f = go where + go (Two n l r) = Two n (go l) (go r) + go (One i a) = One i (f i a) + go Zero = Zero + {-# INLINE imap #-} + +instance FoldableWithIndex i (Level i) where + ifoldMap f = go where + go (Two _ l r) = go l `mappend` go r + go (One i a) = f i a + go Zero = mempty + {-# INLINE ifoldMap #-} + +instance TraversableWithIndex i (Level i) where + itraverse f = go where + go (Two n l r) = Two n <$> go l <*> go r + go (One i a) = One i <$> f i a + go Zero = pure Zero + {-# INLINE itraverse #-} + +instance FunctorWithIndex i (Magma i t b) where + imap f (MagmaAp x y) = MagmaAp (imap f x) (imap f y) + imap _ (MagmaPure x) = MagmaPure x + imap f (MagmaFmap xy x) = MagmaFmap xy (imap f x) + imap f (MagmaLeaf i a) = MagmaLeaf i (f i a) + {-# INLINE imap #-} + +instance FoldableWithIndex i (Magma i t b) where + ifoldMap f (MagmaAp x y) = ifoldMap f x `mappend` ifoldMap f y + ifoldMap _ MagmaPure{} = mempty + ifoldMap f (MagmaFmap _ x) = ifoldMap f x + ifoldMap f (MagmaLeaf i a) = f i a + {-# INLINE ifoldMap #-} + +instance TraversableWithIndex i (Magma i t b) where + itraverse f (MagmaAp x y) = MagmaAp <$> itraverse f x <*> itraverse f y + itraverse _ (MagmaPure x) = pure (MagmaPure x) + itraverse f (MagmaFmap xy x) = MagmaFmap xy <$> itraverse f x + itraverse f (MagmaLeaf i a) = MagmaLeaf i <$> f i a + {-# INLINE itraverse #-} + +------------------------------------------------------------------------------- +-- Misc. +------------------------------------------------------------------------------- + +skip :: a -> () +skip _ = () +{-# INLINE skip #-} + diff --git a/src/Control-Lens-Internal-Deque.html b/src/Control-Lens-Internal-Deque.html new file mode 100644 index 000000000..996dbabf6 --- /dev/null +++ b/src/Control-Lens-Internal-Deque.html @@ -0,0 +1,164 @@ + + + + + +src/Control/Lens/Internal/Deque.hs + + + +
    {-# LANGUAGE CPP #-}
    +{-# LANGUAGE BangPatterns #-}
    +{-# LANGUAGE PatternGuards #-}
    +{-# LANGUAGE FlexibleInstances #-}
    +{-# LANGUAGE MultiParamTypeClasses #-}
    +#ifdef TRUSTWORTHY
    +{-# LANGUAGE Trustworthy #-}
    +#endif
    +-----------------------------------------------------------------------------
    +-- |
    +-- Module      :  Control.Lens.Internal.Deque
    +-- Copyright   :  (C) 2012-13 Edward Kmett
    +-- License     :  BSD-style (see the file LICENSE)
    +-- Maintainer  :  Edward Kmett <ekmett@gmail.com>
    +-- Stability   :  experimental
    +-- Portability :  non-portable
    +--
    +-----------------------------------------------------------------------------
    +module Control.Lens.Internal.Deque
    +  ( Deque(..)
    +  , size
    +  , fromList
    +  , null
    +  , singleton
    +  ) where
    +
    +import Control.Applicative
    +import Control.Lens.Combinators
    +import Control.Lens.Cons
    +import Control.Lens.Fold
    +import Control.Lens.Indexed
    +import Control.Lens.Prism
    +import Control.Monad
    +import Data.Foldable as Foldable
    +import Data.Function
    +import Data.Functor.Reverse
    +import Data.Traversable as Traversable
    +import Data.Monoid
    +import Data.Profunctor.Unsafe
    +import Prelude hiding (null)
    +
    +-- | A Banker's deque based on Chris Okasaki's \"Purely Functional Data Structures\"
    +data Deque a = BD !Int [a] !Int [a]
    +  deriving Show
    +
    +null :: Deque a -> Bool
    +null (BD lf _ lr _) = lf + lr == 0
    +{-# INLINE null #-}
    +
    +singleton :: a -> Deque a
    +singleton a = BD 1 [a] 0 []
    +{-# INLINE singleton #-}
    +
    +size :: Deque a -> Int
    +size (BD lf _ lr _) = lf + lr
    +{-# INLINE size #-}
    +
    +fromList :: [a] -> Deque a
    +fromList = Prelude.foldr cons empty
    +{-# INLINE fromList #-}
    +
    +instance Eq a => Eq (Deque a) where
    +  (==) = (==) `on` toList
    +  {-# INLINE (==) #-}
    +
    +instance Ord a => Ord (Deque a) where
    +  compare = compare `on` toList
    +  {-# INLINE compare #-}
    +
    +instance Functor Deque where
    +  fmap h (BD lf f lr r) = BD lf (fmap h f) lr (fmap h r)
    +  {-# INLINE fmap #-}
    +
    +instance FunctorWithIndex Int Deque where
    +  imap h (BD lf f lr r) = BD lf (imap h f) lr (imap (\j -> h (n - j)) r)
    +    where !n = lf + lr
    +
    +instance Applicative Deque where
    +  pure a = BD 1 [a] 0 []
    +  {-# INLINE pure #-}
    +  fs <*> as = fromList (toList fs <*> toList as)
    +  {-# INLINE (<*>) #-}
    +
    +instance Alternative Deque where
    +  empty = BD 0 [] 0 []
    +  {-# INLINE empty #-}
    +  xs <|> ys
    +    | size xs < size ys = Foldable.foldr cons ys xs
    +    | otherwise         = Foldable.foldl snoc xs ys
    +  {-# INLINE (<|>) #-}
    +
    +instance MonadPlus Deque where
    +  mzero = empty
    +  {-# INLINE mzero #-}
    +  mplus = (<|>)
    +  {-# INLINE mplus #-}
    +
    +instance Monad Deque where
    +  return a = BD 1 [a] 0 []
    +  {-# INLINE return #-}
    +  ma >>= k = fromList (toList ma >>= toList . k)
    +  {-# INLINE (>>=) #-}
    +
    +instance Foldable Deque where
    +  foldMap h (BD _ f _ r) = foldMap h f <> getDual (foldMap (Dual #. h) r)
    +  {-# INLINE foldMap #-}
    +
    +instance FoldableWithIndex Int Deque where
    +  ifoldMap h (BD lf f lr r) = ifoldMap h f <> getDual (ifoldMap (\j -> Dual #. h (n - j)) r)
    +    where !n = lf + lr
    +  {-# INLINE ifoldMap #-}
    +
    +instance Traversable Deque where
    +  traverse h (BD lf f lr r) = (BD lf ?? lr) <$> traverse h f <*> backwards traverse h r
    +  {-# INLINE traverse #-}
    +
    +instance TraversableWithIndex Int Deque where
    +  itraverse h (BD lf f lr r) = (\f' r' -> BD lr f' lr (getReverse r')) <$> itraverse h f <*> itraverse (\j -> h (n - j)) (Reverse r)
    +    where !n = lf + lr
    +  {-# INLINE itraverse #-}
    +
    +instance Monoid (Deque a) where
    +  mempty = BD 0 [] 0 []
    +  {-# INLINE mempty #-}
    +  mappend xs ys
    +    | size xs < size ys = Foldable.foldr cons ys xs
    +    | otherwise         = Foldable.foldl snoc xs ys
    +  {-# INLINE mappend #-}
    +
    +check :: Int -> [a] -> Int -> [a] -> Deque a
    +check lf f lr r
    +  | lf > 3*lr + 1, i <- div (lf + lr) 2, (f',f'') <- splitAt i f = BD i f' (lf + lr - i) (r ++ reverse f'')
    +  | lr > 3*lf + 1, j <- div (lf + lr) 2, (r',r'') <- splitAt j r = BD (lf + lr - j) (f ++ reverse r'') j r'
    +  | otherwise = BD lf f lr r
    +{-# INLINE check #-}
    +
    +instance (Choice p, Applicative f) => Cons p f (Deque a) (Deque b) a b where
    +  _Cons = prism (\(x,BD lf f lr r) -> check (lf + 1) (x : f) lr r) $ \ (BD lf f lr r) ->
    +    if lf + lr == 0
    +    then Left empty
    +    else Right $ case f of
    +      []     -> (head r, empty)
    +      (x:xs) -> (x, check (lf - 1) xs lr r)
    +  {-# INLINE _Cons #-}
    +
    +instance (Choice p, Applicative f) => Snoc p f (Deque a) (Deque b) a b where
    +  _Snoc = prism (\(BD lf f lr r,x) -> check lf f (lr + 1) (x : r)) $ \ (BD lf f lr r) ->
    +    if lf + lr == 0
    +    then Left empty
    +    else Right $ case r of
    +      []     -> (empty, head f)
    +      (x:xs) -> (check lf f (lr - 1) xs, x)
    +  {-# INLINE _Snoc #-}
    +
    + diff --git a/src/Numeric-Lens.html b/src/Numeric-Lens.html index 79c9fa0cb..5d251a031 100644 --- a/src/Numeric-Lens.html +++ b/src/Numeric-Lens.html @@ -17,70 +17,81 @@ -- Stability : provisional -- Portability : portable ------------------------------------------------------------------------------- -module Numeric.Lens (base) where +module Numeric.Lens (base, integral) where import Control.Lens import Data.Char (chr, ord, isAsciiLower, isAsciiUpper, isDigit) import Data.Maybe (fromMaybe) import Numeric (readInt, showIntAtBase) --- | A prism that shows and reads integers in base-2 through base-36 --- --- >>> "100" ^? base 16 --- Just 256 --- --- >>> 1767707668033969 ^. re (base 36) --- "helloworld" -base :: (Integral a, Show a) => a -> Prism' String a -base b - | b < 2 || b > 36 = error ("base: Invalid base " ++ show b) - | otherwise = prism intShow intRead - where - intShow n = showSigned' (showIntAtBase b intToDigit') n "" - - intRead s = - case readSigned' (readInt b (isDigit' b) digitToInt') s of - [(n,"")] -> Right n - _ -> Left s -{-# INLINE base #-} - --- | Like 'Data.Char.intToDigit', but handles up to base-36 -intToDigit' :: Int -> Char -intToDigit' i - | i >= 0 && i < 10 = chr (ord '0' + i) - | i >= 10 && i < 36 = chr (ord 'a' + i - 10) - | otherwise = error ("intToDigit': Invalid int " ++ show i) - --- | Like 'Data.Char.digitToInt', but handles up to base-36 -digitToInt' :: Char -> Int -digitToInt' c = fromMaybe (error ("digitToInt': Invalid digit " ++ show c)) - (digitToIntMay c) - --- | A safe variant of 'digitToInt'' -digitToIntMay :: Char -> Maybe Int -digitToIntMay c - | isDigit c = Just (ord c - ord '0') - | isAsciiLower c = Just (ord c - ord 'a' + 10) - | isAsciiUpper c = Just (ord c - ord 'A' + 10) - | otherwise = Nothing - --- | Select digits that fall into the given base -isDigit' :: Integral a => a -> Char -> Bool -isDigit' b c = case digitToIntMay c of - Just i | fromIntegral i < b -> True - _ -> False - --- | A simpler variant of 'Numeric.showSigned' that only prepends a dash and --- doesn't know about parentheses -showSigned' :: Real a => (a -> ShowS) -> a -> ShowS -showSigned' f n - | n < 0 = showChar '-' . f (negate n) - | otherwise = f n - --- | A simpler variant of 'Numeric.readSigned' that supports any base, only --- recognizes an initial dash and doesn't know about parentheses -readSigned' :: Real a => ReadS a -> ReadS a -readSigned' f ('-':xs) = f xs & mapped . _1 %~ negate -readSigned' f xs = f xs +-- | This 'Prism' extracts can be used to model the fact that every 'Integral' +-- type is a subset of 'Integer'. +-- +-- Embedding through the 'Prism' only succeeds if the 'Integer' would pass +-- through unmodified when re-extracted. +integral :: (Integral a, Integral b) => Prism Integer Integer a b +integral = prism toInteger $ \ i -> let a = fromInteger i in + if toInteger a == i + then Right a + else Left i + +-- | A prism that shows and reads integers in base-2 through base-36 +-- +-- >>> "100" ^? base 16 +-- Just 256 +-- +-- >>> 1767707668033969 ^. re (base 36) +-- "helloworld" +base :: (Integral a, Show a) => a -> Prism' String a +base b + | b < 2 || b > 36 = error ("base: Invalid base " ++ show b) + | otherwise = prism intShow intRead + where + intShow n = showSigned' (showIntAtBase b intToDigit') n "" + + intRead s = + case readSigned' (readInt b (isDigit' b) digitToInt') s of + [(n,"")] -> Right n + _ -> Left s +{-# INLINE base #-} + +-- | Like 'Data.Char.intToDigit', but handles up to base-36 +intToDigit' :: Int -> Char +intToDigit' i + | i >= 0 && i < 10 = chr (ord '0' + i) + | i >= 10 && i < 36 = chr (ord 'a' + i - 10) + | otherwise = error ("intToDigit': Invalid int " ++ show i) + +-- | Like 'Data.Char.digitToInt', but handles up to base-36 +digitToInt' :: Char -> Int +digitToInt' c = fromMaybe (error ("digitToInt': Invalid digit " ++ show c)) + (digitToIntMay c) + +-- | A safe variant of 'digitToInt'' +digitToIntMay :: Char -> Maybe Int +digitToIntMay c + | isDigit c = Just (ord c - ord '0') + | isAsciiLower c = Just (ord c - ord 'a' + 10) + | isAsciiUpper c = Just (ord c - ord 'A' + 10) + | otherwise = Nothing + +-- | Select digits that fall into the given base +isDigit' :: Integral a => a -> Char -> Bool +isDigit' b c = case digitToIntMay c of + Just i | fromIntegral i < b -> True + _ -> False + +-- | A simpler variant of 'Numeric.showSigned' that only prepends a dash and +-- doesn't know about parentheses +showSigned' :: Real a => (a -> ShowS) -> a -> ShowS +showSigned' f n + | n < 0 = showChar '-' . f (negate n) + | otherwise = f n + +-- | A simpler variant of 'Numeric.readSigned' that supports any base, only +-- recognizes an initial dash and doesn't know about parentheses +readSigned' :: Real a => ReadS a -> ReadS a +readSigned' f ('-':xs) = f xs & mapped . _1 %~ negate +readSigned' f xs = f xs