Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.70 KB | None | 0 0
  1. import cats.Monoid
  2. import cats.Semigroup
  3. import cats.instances.int._
  4. import cats.instances.option._
  5. import cats.syntax.semigroup._
  6.  
  7. case class Order(totalCost: Double, quantity: Double)
  8.  
  9. implicit def orderMonoid: Monoid[Order] = new Monoid[Order] {
  10. def empty: Order = Order(0, 0)
  11. def combine(x: Order, y: Order): Order =
  12. Order(x.totalCost + y.totalCost, x.quantity + y.quantity)
  13. }
  14.  
  15. def addCats[A: Monoid](items: List[A]): A =
  16. items.foldLeft(Monoid[A].empty)(_ |+| _)
  17.  
  18. addCats(List(1, 2, 3, 4, 5))
  19. addCats(List(Option(1), Option(2), None, Option(3), None, Option(4), Option(5)))
  20.  
  21. val order1 = Order(2.5, 1)
  22. val order2 = Order(3.5, 2)
  23. val order3 = Order(4.0, 3)
  24.  
  25. addCats(List[Order](order1, order2, order3))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement