Home

Awesome

RAII.scala <a href="http://thoughtworks.com/"><img align="right" src="https://www.thoughtworks.com/imgs/tw-logo.png" title="ThoughtWorks" height="15"/></a>

Build Status Latest version Scaladoc

RAII.scala is a collection of utilities aims to manage native resources in Scalaz.

Asynchronous 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.

Covariant 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.

Invariant 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.

Links

Related projects

Credits

This library is inspired by Josh Suereth's scala-arm, in which I implemented the reference counting mechanism at first.