Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.scalactic._
- import org.scalactic.Accumulation._
- trait Error
- type Errors = Every[Error]
- case object AnError extends Error
- object ValidationImplicits {
- implicit class ValidationOps[E](val validLeft: Validation[Every[E]]) extends AnyVal {
- def or(validRight: Validation[Every[E]]): Validation[Every[E]] = {
- (validLeft, validRight) match {
- case (Pass, Pass) => Pass
- case (Fail(_), Pass) => Pass
- case (Pass, Fail(_)) => Pass
- case (Fail(errorsLeft), Fail(errorsRight)) => Fail(errorsLeft ++ errorsRight)
- }
- }
- }
- }
- import ValidationImplicits._
- def validate1(s: String): Validation[Errors] = Pass
- def validate2(s: String): Validation[Errors] = Fail(One(AnError))
- def sOrError = Good("foo")
- // Usage:
- for {
- s <- sOrError
- if validate1(s) or validate2(s)
- } yield s
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement