arrow-fx / arrow.fx / Resource / invoke

invoke

operator fun <C> ~~invoke~~(use: (A) -> Kind<F, C>): Kind<F, C> Deprecated: Api is being renamed to use for explicitness

operator fun <F, E, A> invoke(acquire: () -> Kind<F, A>, release: (A, ExitCase<E>) -> Kind<F, Unit>, BR: Bracket<F, E>): Resource<F, E, A>

Construct a Resource from a allocating function acquire and a release function release.

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 resource = Resource(::acquireResource, ::releaseResource, IO.bracket())
  //sampleEnd
  resource.use {
    IO { println("Expensive resource under use! $it") }
  }.fix().unsafeRunSync()
}

operator fun <F, E, A> invoke(acquire: () -> Kind<F, A>, release: (A) -> Kind<F, Unit>, BR: Bracket<F, E>): Resource<F, E, A>

Construct a Resource from a allocating function acquire and a release function release.

See Also

use

Do you like Arrow?

Arrow Org
<