trait Monoid[F] extends Semigroup[F]
Provides an identity element (zero
) to the binary append
operation in scalaz.Semigroup, subject to the monoid laws.
Example instances:
Monoid[Int]
:zero
andappend
are0
andInt#+
respectivelyMonoid[List[A]]
:zero
andappend
areNil
andList#++
respectively
References:
- Self Type
- Monoid[F]
- Source
- Monoid.scala
- See also
- Alphabetic
- By Inheritance
- Monoid
- Semigroup
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- trait MonoidLaw extends SemigroupLaw
Monoid instances must satisfy scalaz.Semigroup.SemigroupLaw and 2 additional laws:
Monoid instances must satisfy scalaz.Semigroup.SemigroupLaw and 2 additional laws:
- left identity:
forall a. append(zero, a) == a
- right identity :
forall a. append(a, zero) == a
- left identity:
- trait SemigroupApply extends Apply[[α]F]
- Attributes
- protected[this]
- Definition Classes
- Semigroup
- trait SemigroupCompose extends Compose[[α, β]F]
- Attributes
- protected[this]
- Definition Classes
- Semigroup
- trait SemigroupLaw extends AnyRef
A semigroup in type F must satisfy two laws:
A semigroup in type F must satisfy two laws:
- closure:
∀ a, b in F, append(a, b)
is also inF
. This is enforced by the type system. - associativity:
∀ a, b, c
inF
, the equationappend(append(a, b), c) = append(a, append(b , c))
holds.
- Definition Classes
- Semigroup
- closure:
Abstract Value Members
- abstract def append(f1: F, f2: => F): F
The binary operation to combine
f1
andf2
.The binary operation to combine
f1
andf2
.Implementations should not evaluate the by-name parameter
f2
if result can be determined byf1
.- Definition Classes
- Semigroup
- abstract def zero: F
The identity element for
append
.
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def applicative: Applicative[[α]F]
A monoidal applicative functor, that implements
point
andap
with the operationszero
andappend
respectively.A monoidal applicative functor, that implements
point
andap
with the operationszero
andappend
respectively. Note that the type parameterα
inApplicative[λ[α => F]]
is discarded; it is a phantom type. As such, the functor cannot support scalaz.Bind. - final def apply: Apply[[α]F]
An scalaz.Apply, that implements
ap
withappend
.An scalaz.Apply, that implements
ap
withappend
. Note that the type parameterα
inApply[λ[α => F]]
is discarded; it is a phantom type. As such, the functor cannot support scalaz.Bind.- Definition Classes
- Semigroup
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- final def category: Category[[α, β]F]
Every
Monoid
gives rise to a scalaz.Category, for which the type parameters are phantoms.Every
Monoid
gives rise to a scalaz.Category, for which the type parameters are phantoms.- Note
category.monoid
=this
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def compose: Compose[[α, β]F]
Every
Semigroup
gives rise to a scalaz.Compose, for which the type parameters are phantoms.Every
Semigroup
gives rise to a scalaz.Compose, for which the type parameters are phantoms.- Definition Classes
- Semigroup
- Note
compose.semigroup
=this
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def ifEmpty[B](a: F)(t: => B)(f: => B)(implicit eq: Equal[F]): B
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def isMZero(a: F)(implicit eq: Equal[F]): Boolean
Whether
a
==zero
. - def monoidLaw: MonoidLaw
- val monoidSyntax: MonoidSyntax[F]
- def multiply(value: F, n: Int): F
For
n = 0
,zero
Forn = 1
,append(zero, value)
Forn = 2
,append(append(zero, value), value)
- def multiply1(value: F, n: Int): F
For
n = 0
,value
Forn = 1
,append(value, value)
Forn = 2
,append(append(value, value), value)
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def onEmpty[A, B](a: F)(v: => B)(implicit eq: Equal[F], mb: Monoid[B]): B
- final def onNotEmpty[B](a: F)(v: => B)(implicit eq: Equal[F], mb: Monoid[B]): B
- def semigroupLaw: SemigroupLaw
- Definition Classes
- Semigroup
- val semigroupSyntax: SemigroupSyntax[F]
- Definition Classes
- Semigroup
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- def unfoldlSum[S](seed: S)(f: (S) => Maybe[(S, F)]): F
- def unfoldlSumOpt[S](seed: S)(f: (S) => Maybe[(S, F)]): Maybe[F]
Unfold
seed
to the left and sum using #append. - def unfoldrSum[S](seed: S)(f: (S) => Maybe[(F, S)]): F
- def unfoldrSumOpt[S](seed: S)(f: (S) => Maybe[(F, S)]): Maybe[F]
Unfold
seed
to the right and sum using #append. - final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()