arrow-optics / arrow.optics / Getter

Getter

interface Getter<S, A> : GetterOf<S, A>

Functions

asFold open fun asFold(): Fold<S, A>
choice Join two Getter with the same focusopen infix fun <C> choice(other: Getter<C, A>): Getter<Either<S, C>, A>
compose Compose a Getter with a Getteropen infix fun <C> compose(other: Getter<A, C>): Getter<S, C>
Compose a Getter with a Lensopen infix fun <C> compose(other: Lens<A, C>): Getter<S, C>
Compose a Getter with a Isoopen infix fun <C> compose(other: Iso<A, C>): Getter<S, C>
Compose a Getter with a Foldopen infix fun <C> compose(other: Fold<A, C>): Fold<S, C>
exist Check if the focus A satisfies the predicate p.open fun exist(s: S, p: (A) -> Boolean): Boolean
find Find the focus A if it satisfies the predicate p.open fun find(s: S, p: (A) -> Boolean): Option<A>
first Create a product of the Getter and a type Copen fun <C> first(): Getter<Tuple2<S, C>, Tuple2<A, C>>
get Get the focus of a Getterabstract fun get(s: S): A
left Create a sum of the Getter and type Copen fun <C> left(): Getter<Either<S, C>, Either<A, C>>
plus Plus operator overload to compose optionalsopen operator fun <C> plus(other: Getter<A, C>): Getter<S, C>open operator fun <C> plus(other: Lens<A, C>): Getter<S, C>
open operator fun <C> plus(other: Iso<A, C>): Getter<S, C>
open operator fun <C> plus(other: Fold<A, C>): Fold<S, C>
right Create a sum of type C and the Getteropen fun <C> right(): Getter<Either<C, S>, Either<C, A>>
second Create a product of type C and the Getteropen fun <C> second(): Getter<Tuple2<C, S>, Tuple2<C, A>>
split Pair two disjoint Getteropen infix fun <C, D> split(other: Getter<C, D>): Getter<Tuple2<S, C>, Tuple2<A, D>>
zip Zip two Getter optics with the same source Sopen infix fun <C> zip(other: Getter<S, C>): Getter<S, Tuple2<A, C>>

Companion Object Functions

codiagonal Getter that takes either S or S and strips the choice of S.fun <S> codiagonal(): Getter<Either<S, S>, S>
id fun <S> id(): Getter<S, S>

Extension Functions

at DSL to compose At with a Getter for a structure S to focus in on A at given index I.fun <T, S, I, A> Getter<T, S>.at(AT: At<S, I, A>, i: I): Getter<T, A>

Do you like Arrow?

Arrow Org
<