index package:lens

This allows you to filter an IndexedFold, IndexedGetter, IndexedTraversal or IndexedLens based on an index.
>>> ["hello","the","world","!!!"]^?traversed.index 2
Just "world"
Build a function from an indexed function.
Transform a Traversal into an IndexedTraversal or a Fold into an IndexedFold, etc.
indexing :: Traversal s t a b -> IndexedTraversal Int s t a b
indexing :: Prism s t a b     -> IndexedTraversal Int s t a b
indexing :: Lens s t a b      -> IndexedLens Int  s t a b
indexing :: Iso s t a b       -> IndexedLens Int s t a b
indexing :: Fold s a          -> IndexedFold Int s a
indexing :: Getter s a        -> IndexedGetter Int s a
indexing :: Indexable Int p => LensLike (Indexing f) s t a b -> Over p f s t a b
Transform a Traversal into an IndexedTraversal or a Fold into an IndexedFold, etc. This combinator is like indexing except that it handles large traversals and folds gracefully.
indexing64 :: Traversal s t a b -> IndexedTraversal Int64 s t a b
indexing64 :: Prism s t a b     -> IndexedTraversal Int64 s t a b
indexing64 :: Lens s t a b      -> IndexedLens Int64 s t a b
indexing64 :: Iso s t a b       -> IndexedLens Int64 s t a b
indexing64 :: Fold s a          -> IndexedFold Int64 s a
indexing64 :: Getter s a        -> IndexedGetter Int64 s a
indexing64 :: Indexable Int64 p => LensLike (Indexing64 f) s t a b -> Over p f s t a b
An IndexPreservingFold can be used as a Fold, but when composed with an IndexedTraversal, IndexedFold, or IndexedLens yields an IndexedFold respectively.
An IndexPreservingGetter can be used as a Getter, but when composed with an IndexedTraversal, IndexedFold, or IndexedLens yields an IndexedFold, IndexedFold or IndexedGetter respectively.
An IndexPreservingLens leaves any index it is composed with alone.
An IndexPreservingSetter can be composed with a IndexedSetter, IndexedTraversal or IndexedLens and leaves the index intact, yielding an IndexedSetter.
type IndexedPreservingSetter' i = Simple IndexedPreservingSetter
An IndexPreservingTraversal leaves any index it is composed with alone.
This class permits overloading of function application for things that also admit a notion of a key or index.
A function with access to a index. This constructor may be useful when you need to store an Indexable in a container to avoid ImpredicativeTypes.
index :: Indexed i a b -> i -> a -> b
Every IndexedFold is a valid Fold and can be used for Getting.
Every IndexedGetter is a valid IndexedFold and can be used for Getting like a Getter.