Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import scalaz.zio._
- import scala.annotation.switch
- sealed trait Vote
- final case class Leave(i: Int) extends Vote
- case object Remain extends Vote
- sealed trait Brexit
- case object CustomsUnion extends Brexit
- case object NorwayPlus extends Brexit
- case object WTOTerms extends Brexit
- case object NoDeal extends Brexit
- sealed trait ExitStatus extends Brexit
- case object Rejected extends ExitStatus
- case object Soft extends ExitStatus
- object Ballot {
- def process(vote: Vote): ZIO[Any,Brexit,Vote] =
- vote match {
- case Remain => UIO.succeed(vote)
- case Leave(i) =>
- (i: @switch) match {
- case 1 => ZIO.fail(WTOTerms)
- case 2 => ZIO.fail(NoDeal)
- case _ => UIO.succeed(vote)
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement