Skip to content

Instantly share code, notes, and snippets.

@afsalthaj
Last active April 11, 2018 07:20
Show Gist options
  • Save afsalthaj/d16c54af9602d48c556b25fefd95db9f to your computer and use it in GitHub Desktop.
Save afsalthaj/d16c54af9602d48c556b25fefd95db9f to your computer and use it in GitHub Desktop.
import shapeless.{HList, ::, HNil }
import scalaz.syntax.applicative._
import scalaz.syntax.either._
import scalaz.syntax.validation._
implicit val hnilEncode: Validation[HNil] =
Validation.createInstance( _.successNel[ValidationError]) //Yea, that's it
implicit def hlistEncoder[H, T <: HList] (
implicit
hEncoder: Validation[H],
tEncoder: Validation[T]
): Validation[H :: T] =
Validation.createInstance {
case h :: t => (hEncoder.validate(h) |@| tEncoder.validate(t)){_ :: _}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment