arrow-fx / arrow.fx.extensions / IOConcurrent / parTupledN
open fun <A, B> parTupledN(ctx: CoroutineContext, fa: Kind<ForIO, A>, fb: Kind<ForIO, B>): IO<Tuple2<A, B>>
Map two tasks in parallel within a new F on ctx.
import arrow.Kind
import arrow.core.Tuple2
import arrow.fx.IO
import kotlinx.coroutines.Dispatchers
import arrow.fx.typeclasses.Concurrent
import arrow.fx.extensions.io.concurrent.concurrent
import arrow.fx.fix
fun main(args: Array<String>) {
fun <F> Concurrent<F>.example(): Kind<F, Tuple2<String, String>> {
//sampleStart
val result = parTupledN(
Dispatchers.Default,
effect { "First one is on ${Thread.currentThread().name}" },
effect { "Second one is on ${Thread.currentThread().name}" }
)
//sampleEnd
return result
}
IO.concurrent().example().fix().unsafeRunSync().let(::println)
}
ctx - CoroutineContext to execute the source F on.
fa - value to parallel map
fb - value to parallel map
Return F with the result of function fa and fb.
See Also
open fun <A, B, C> parTupledN(ctx: CoroutineContext, fa: Kind<ForIO, A>, fb: Kind<ForIO, B>, fc: Kind<ForIO, C>): IO<Tuple3<A, B, C>>
See Also
Do you like Arrow?
✖