All Downloads are FREE. Search and download functionalities are using the official Maven repository.

spire.algebra.Group.scala Maven / Gradle / Ivy

The newest version!
package spire.algebra

import spire.macrosk.Ops

/**
 * A group is a monoid where each element has an inverse.
 */
trait Group[A] extends Monoid[A] {
  def inverse(a: A): A
}

object Group {
  @inline final def apply[A](implicit ev: Group[A]) = ev
}

/**
 * An abelian group is a group whose operation is commutative.
 */
trait AbGroup[A] extends Group[A]

final class GroupOps[A](lhs:A)(implicit ev:Group[A]) {
  def inverse() = macro Ops.unop[A]
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy