Each
provides a Traversal
that can focus into a structure S
to see all its foci A
.
Each
can easily be created given a Traverse
instance.
import arrow.core.*
import arrow.optics.*
import arrow.optics.typeclasses.*
import arrow.core.extensions.listk.traverse.*
val each: Each<ListKOf<Int>, Int> = Each.fromTraverse(ListK.traverse())
val listTraversal: Traversal<ListKOf<Int>, Int> = each.each()
listTraversal.lastOption(listOf(1, 2, 3).k())
// Option.Some(3)
listTraversal.lastOption(ListK.empty())
// Option.None
Each
instancesArrow provides Each
instances for some common datatypes in Arrow. You can look them up by calling Each.each()
.
You may create instances of Each
for your own datatypes, which you will be able to use as demonstrated in the example above.
See Deriving and creating custom typeclass to provide your own Each
instances for custom datatypes.
Do you like Arrow?
✖