Resource Acquisition Is Initialization
RAII.scala is a collection of utilities aims to manage native resources in Scalaz.
Do
An asynchronous.Do
is an asynchronous value, like scala.concurrent.Future
or scalaz.concurrent.Task
.
The difference is that resources in Do
can be either automatically acquired/released in scope,
or managed by reference counting mechanism.
To use Do
, add the following setting to your build.sbt,
libraryDependencies += "com.thoughtworks.raii" %% "asynchronous" % "latest.release"
and check the Scaladoc for usage.
ResourceT
Do
consists of some monad transformers.
The ability of resource management in Do
is provided by the monad transformer ResourceT
.
You can combine ResourceT
with monads other than asynchronous.Do
. For example, a resource manager in synchronous execution.
ResourceT
To use ResourceT
for monadic data types whose kind is F[+A]
(e.g. scalaz.concurrent.Future
or scalaz.Name
),
add the following setting to your build.sbt:
libraryDependencies += "com.thoughtworks.raii" %% "covariant" % "latest.release"
and check the Scaladoc for usage.
ResourceT
To use ResourceT
for monadic data types whose kind is F[A]
(e.g. scalaz.effect.IO
),
add the following setting to your build.sbt:
libraryDependencies += "com.thoughtworks.raii" %% "invariant" % "latest.release"
and check the Scaladoc for usage.
monadic
/each
-like syntax which can be used with this project.This library is inspired by Josh Suereth‘s scala-arm,
in which I implemented the reference counting mechanism at first.