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?
✖