invariant
The namespace that contains the invariant TryT.
Type members
Classlikes
Types
A monad transformer for exception handling.
A monad transformer for exception handling.
- See also
This
TryT
transfomer is similar to scalaz.EitherT, exceptTryT
handles exceptions thrown in callback functions passed to map, bind or point.- Note
This
TryT
type is an opacity alias toF[Try[A]]
. All type classes and helper functions for thisTryT
type are defined in the companion object TryT- Example
As a monad transformer,
TryT
should be used with another monadic data type, like scalaz.Name.import scalaz.Name import com.thoughtworks.tryt.invariant.TryT, TryT._ type TryName[A] = TryT[Name, A]
Given a
validate
function,def validate(s: String): Int = s.toInt
when creating a
TryT
-transformed scalaz.Name from thevalidate
,import scalaz.syntax.all._ val invalidTry: TryName[Int] = validate("invalid input").point[TryName]
then the exceptions thrown in
validate
call should be converted to a scala.util.Failure;import com.thoughtworks.tryt.invariant.TryT._ val TryT(Name(failure)) = invalidTry import scala.util._ failure should be(an[Failure[_]])
and when there is no exception thrown in
validate
call,val validTry: TryName[Int] = validate("42").point[TryName]
then the result of
validate
call should be converted to a scala.util.Success;val TryT(Name(success)) = validTry success should be(Success(42))
and when the
TryT
-transformed scalaz.Name is built from afor
-comprehension,val invalidForComprehension: TryName[Int] = for { i <- validate("42").point[TryName] j <- validate("invalid input").point[TryName] } yield i + j
then the exceptions thrown in the
for
-comprehension should be converted to a scala.util.Failure;val TryT(Name(failure2)) = invalidTry failure2 should be(an[Failure[_]])