arrow-fx / arrow.fx / Resource / 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
Do you like Arrow?
✖