override def plus()

in algebird-core/src/main/scala/com/twitter/algebird/InvariantAlgebras.scala [5:23]


  override def plus(l: U, r: U): U =
    forward(semigroup.plus(reverse(l), reverse(r)))
  override def sumOption(iter: TraversableOnce[U]): Option[U] =
    semigroup.sumOption(iter.map(reverse)).map(forward)

  /*
   * Note these work for the subclasses since in those cases semigroup
   * will be the appropriate algebra.
   */
  override val hashCode: Int = (forward, reverse, semigroup).hashCode
  override def equals(that: Any): Boolean =
    that match {
      case r: InvariantSemigroup[_, _] =>
        (hashCode == r.hashCode) &&
        (forward == r.forward) &&
        (reverse == r.reverse) &&
        (semigroup == r.semigroup)
      case _ => false
    }