Rebind is a Scala port/remake of the Haskell retry library. One
of the main differences is it is designed to work with DisjunctionT
's instead of MonadIO
things.
Rebind is cross-built/published against Scala 2.10 and 2.11 with Scalaz 7.1 - Scalaz is (currently) its only dependency.
To use it in your project, add the following to your SBT build definition:
resolvers += "adelbertc" at "http://dl.bintray.com/adelbertc/maven"
libraryDependencies += "com.adelbertc" %% "rebind-core" % "0.2.0"
Despite the small bit of code that it is, there may well be breaking changes in the following versions.
Example usage can be found in the tests.
Because Rebind abstracts out the F[_] : Monad
used in the DisjunctionT
, it should (hopefully) be pretty easy
to make it work with libraries like Doobie or
Dispatch. The general idea is to get your "action" (probably
in the form of scalaz.concurrent.Task
or scalaz.effect.IO
) and then use Rebind to specify how you want to
retry in the case of failure to get a new retrying action back. The operations are stack stafe so long as F[_]
is - common examples are Task
and IO
.
Code is provided under the BSD 3-Clause license available at http://opensource.org/licenses/BSD-3-Clause, as well as in the LICENSE file. This is the same license used as the retry library.