If you want to handle error, you can have several ways.
1. Id F is an instance of MonadError class, you can call recover error and call ~> like this
monadErrorValue.handleError( err => ..return normal computation..) ~> description
2. Or, you can inspect value via match statement and construct described computation like this.
f match {
case v if v.isSuccess => DescribedComputationT(v.map(_.logSuccess(description))
case v if v.isFailure => DescribedComputationT(v.map(_.logFailure(description))
}
This is just a small helper methods to construct DescribedComputationT for contextual f values. Example:
If you want to handle error, you can have several ways. 1. Id F is an instance of MonadError class, you can call recover error and call ~> like this
2. Or, you can inspect value via match statement and construct described computation like this.