arrow-fx / arrow.fx / Resource / use

use

fun <B> use(f: (A) -> Kind<F, B>): Kind<F, B>

Use the created resource When done will run all finalizers

import arrow.fx.IO
import arrow.fx.Resource
import arrow.fx.extensions.io.bracket.bracket
import arrow.fx.fix

fun acquireResource(): IO<Int> = IO { println("Getting expensive resource"); 42 }
fun releaseResource(r: Int): IO<Unit> = IO { println("Releasing expensive resource: $r") }

fun main() {
  //sampleStart
  val program = Resource(::acquireResource, ::releaseResource, IO.bracket()).use {
    IO { println("Expensive resource under use! $it") }
  }
  //sampleEnd
  program.fix().unsafeRunSync()
}

Do you like Arrow?

Arrow Org
<