package scalaz sealed trait IntW extends PimpedType[Int] { import Scalaz._ def ∏ : IntMultiplication = multiplication(value) def ordering: Ordering = if (value < 0) LT else if (value > 0) GT else EQ def times[M:Monoid](m: M): M = { def timesPrime(a: M, n: Int): M = if (n > 0) timesPrime(m |+| a, n - 1) else a timesPrime(mzero, value) } } trait Ints { implicit def IntTo(n: Int): IntW = new IntW { val value = n } }