Min and Max

Min

import com.twitter.algebird._
// import com.twitter.algebird._

import Operators._
// import Operators._

Min(10) + Min(20) + Min(30)
// res0: com.twitter.algebird.Min[Int] = Min(10)

Max

Example from http://www.michael-noll.com/blog/2013/12/02/twitter-algebird-monoid-monad-for-large-scala-data-analytics/

Max(10) + Max(30) + Max(20)
// res1: com.twitter.algebird.Max[Int] = Max(30)

case class TwitterUser(val name: String, val numFollowers: Int) extends Ordered[TwitterUser] {
  def compare(that: TwitterUser): Int = {
    val c = this.numFollowers - that.numFollowers
    if (c == 0) this.name.compareTo(that.name) else c
  }
}
// defined class TwitterUser

Let’s have a popularity contest on Twitter. The user with the most followers wins!

scala> val barackobama = TwitterUser("BarackObama", 40267391)
barackobama: TwitterUser = TwitterUser(BarackObama,40267391)

scala> val katyperry = TwitterUser("katyperry", 48013573)
katyperry: TwitterUser = TwitterUser(katyperry,48013573)

scala> val ladygaga = TwitterUser("ladygaga", 40756470)
ladygaga: TwitterUser = TwitterUser(ladygaga,40756470)

scala> val miguno = TwitterUser("miguno", 731) // I participate, too.  Olympic spirit!
miguno: TwitterUser = TwitterUser(miguno,731)

scala> val taylorswift = TwitterUser("taylorswift13", 37125055)
taylorswift: TwitterUser = TwitterUser(taylorswift13,37125055)

scala> val winner: Max[TwitterUser] = Max(barackobama) + Max(katyperry) + Max(ladygaga) + Max(miguno) + Max(taylorswift)
winner: com.twitter.algebird.Max[TwitterUser] = Max(TwitterUser(katyperry,48013573))

scala> assert(winner.get == katyperry)

Documentation Help

We’d love your help fleshing out this documentation! You can edit this page in your browser by clicking this link. These links might be helpful: