# Index

`interface Index<S, I, A>`

Index provides an Optional for a structure S to focus in an optional A at a given index I.

### Parameters

`S` - source of Optional

`I` - index

`A` - focus of Optional, A is supposed to be unique for a given pair S and I.

### Functions

 get `open operator fun ``Lens``<``T``, ``S``>.get(i: ``I``): ``Optional``<``T``, ``A``>`DSL to compose Index with a Lens for a structure S to focus in on A at given index I.`open operator fun ``Iso``<``T``, ``S``>.get(i: ``I``): ``Optional``<``T``, ``A``>`DSL to compose Index with an Iso for a structure S to focus in on A at given index I.`open operator fun ``Prism``<``T``, ``S``>.get(i: ``I``): ``Optional``<``T``, ``A``>`DSL to compose Index with a Prism for a structure S to focus in on A at given index I.`open operator fun ``Optional``<``T``, ``S``>.get(i: ``I``): ``Optional``<``T``, ``A``>`DSL to compose Index with an Optional for a structure S to focus in on A at given index I.`open operator fun ``Setter``<``T``, ``S``>.get(i: ``I``): ``Setter``<``T``, ``A``>`DSL to compose Index with a Setter for a structure S to focus in on A at given index I.`open operator fun ``Traversal``<``T``, ``S``>.get(i: ``I``): ``Traversal``<``T``, ``A``>`DSL to compose Index with a Traversal for a structure S to focus in on A at given index I.`open operator fun ``Fold``<``T``, ``S``>.get(i: ``I``): ``Fold``<``T``, ``A``>`DSL to compose Index with a Fold for a structure S to focus in on A at given index I. index `abstract fun index(i: ``I``): ``Optional``<``S``, ``A``>`Get Optional focus A for a structure S at index i.`open fun ``Lens``<``T``, ``S``>.index(i: ``I``): ``Optional``<``T``, ``A``>`DSL to compose Index with a Lens for a structure S to focus in on A at given index I.`open fun ``Iso``<``T``, ``S``>.index(i: ``I``): ``Optional``<``T``, ``A``>`DSL to compose Index with an Iso for a structure S to focus in on A at given index I.`open fun ``Prism``<``T``, ``S``>.index(i: ``I``): ``Optional``<``T``, ``A``>`DSL to compose Index with a Prism for a structure S to focus in on A at given index I.`open fun ``Optional``<``T``, ``S``>.index(i: ``I``): ``Optional``<``T``, ``A``>`DSL to compose Index with an Optional for a structure S to focus in on A at given index I.`open fun ``Setter``<``T``, ``S``>.index(i: ``I``): ``Setter``<``T``, ``A``>`DSL to compose Index with a Setter for a structure S to focus in on A at given index I.`open fun ``Traversal``<``T``, ``S``>.index(i: ``I``): ``Traversal``<``T``, ``A``>`DSL to compose Index with a Traversal for a structure S to focus in on A at given index I.`open fun ``Fold``<``T``, ``S``>.index(i: ``I``): ``Fold``<``T``, ``A``>`DSL to compose Index with a Fold for a structure S to focus in on A at given index I.

### Companion Object Functions

 fromIso `fun fromIso(ID: ``Index``<``A``, ``I``, ``B``>, iso: ``Iso``<``S``, ``A``>): ``Index``<``S``, ``I``, ``B``>`Lift an instance of Index using an Iso.

### Inheritors

 ListIndex `interface ListIndex : ``Index``<``List``<``A``>, ``Int``, ``A``>`Index instance definition for List. ListKIndex `interface ListKIndex : ``Index``, ``Int``, ``A``>`Index instance definition for ListK. MapIndex `interface MapIndex : ``Index``<``Map``<``K``, ``V``>, ``K``, ``V``>`Index instance definition for Map. MapKIndex `interface MapKIndex : ``Index``, ``K``, ``V``>`Index instance definition for Map. NonEmptyListIndex `interface NonEmptyListIndex : ``Index``, ``Int``, ``A``>`Index instance definition for NonEmptyList. SequenceKIndex `interface SequenceKIndex : ``Index``, ``Int``, ``A``>`Index instance definition for SequenceK. StringIndex `interface StringIndex : ``Index``<``String``, ``Int``, ``Char``>`Index instance for String. It allows access to every Char in a String by its index’s position.