Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.72 KB | None | 0 0
  1. import scalaz.zio._
  2. import scala.annotation.switch
  3.  
  4. sealed trait Vote
  5. final case class Leave(i: Int) extends Vote
  6. case object Remain extends Vote
  7.  
  8. sealed trait Brexit
  9. case object CustomsUnion extends Brexit
  10. case object NorwayPlus extends Brexit
  11. case object WTOTerms extends Brexit
  12. case object NoDeal extends Brexit
  13.  
  14. sealed trait ExitStatus extends Brexit
  15. case object Rejected extends ExitStatus
  16. case object Soft extends ExitStatus
  17.  
  18. object Ballot {
  19.  
  20. def process(vote: Vote): ZIO[Any,Brexit,Vote] =
  21. vote match {
  22. case Remain => UIO.succeed(vote)
  23. case Leave(i) =>
  24. (i: @switch) match {
  25. case 1 => ZIO.fail(WTOTerms)
  26. case 2 => ZIO.fail(NoDeal)
  27. case _ => UIO.succeed(vote)
  28. }
  29. }
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement