arrow-core / arrow.core.extensions.either.bitraverse / arrow.core.Either / bitraverse
fun Either.Companion.~~bitraverse~~():
EitherBitraverse
Deprecated: Functor typeclasses is deprecated. Use concrete methods on Either
The type class Bitraverse
defines the behaviour of two separetes Traverse
over a data type.
Every instance of Bitraverse<F>
must contains the next functions:
Bitraverse
perfoms aTraverse
over both side of the Data type which is Bifoldable
.
import arrow.core.*
import arrow.core.extensions.option.applicative.applicative
import arrow.core.extensions.*
import arrow.core.extensions.tuple2.bitraverse.bitraverse
fun main() {
//sampleStart
val f: (Int) -> Option<Int> = { Some(it + 1) }
val g: (Int) -> Option<Int> = { Some(it * 3) }
val tuple = Tuple2(1, 2)
val bitraverseResult = tuple.bitraverse(Option.applicative(), f, g)
//sampleEnd
println(bitraverseResult)
}
Bisequence
invert the original structure F<G<A,B>>
to G<F<A>,F<B>>
import arrow.core.*
import arrow.core.extensions.*
import arrow.core.extensions.option.applicative.applicative
import arrow.core.extensions.tuple2.bitraverse.bisequence
fun main() {
//sampleStart
val tuple = Tuple2(Some(1), Some(2))
val sequenceResult = tuple.bisequence(Option.applicative())
//sampleEnd
println(sequenceResult)
}
Do you like Arrow?
✖