trait MonoidK[F[_]] extends SemigroupK[F]
MonoidK is a universal monoid which operates on kinds.
This type class is useful when its type parameter F[_] has a structure that can be combined for any particular type, and which also has an "empty" representation. Thus, MonoidK is like a Monoid for kinds (i.e. parametrized types).
A MonoidK[F] can produce a Monoid[F[A]] for any type A.
Here's how to distinguish Monoid and MonoidK:
- Monoid[A] allows A values to be combined, and also means there is an "empty" A value that functions as an identity.
- MonoidK[F] allows two F[A] values to be combined, for any A. It also means that for any A, there is an "empty" F[A] value. The combination operation and empty value just depend on the structure of F, but not on the structure of A.
- Self Type
- MonoidK[F]
- Annotations
- @implicitNotFound( ... ) @typeclass( ... , ... )
- Alphabetic
- By Inheritance
- MonoidK
- SemigroupK
- Serializable
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
-
abstract
def
combineK[A](x: F[A], y: F[A]): F[A]
Combine two F[A] values.
Combine two F[A] values.
Example:
scala> import cats.implicits._ scala> SemigroupK[List].combineK(List(1, 2), List(3, 4)) res0: List[Int] = List(1, 2, 3, 4)
- Definition Classes
- SemigroupK
- Annotations
- @op( "<+>" , true )
-
abstract
def
empty[A]: F[A]
Given a type A, create an "empty" F[A] value.
Given a type A, create an "empty" F[A] value.
Example:
scala> import cats.implicits._ scala> MonoidK[List].empty[Long] res0: List[Long] = List()
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
-
def
algebra[A]: Monoid[F[A]]
Given a type A, create a concrete Monoid[F[A]].
Given a type A, create a concrete Monoid[F[A]].
Example:
scala> import cats.implicits._ scala> MonoidK[List].algebra[Long].empty res0: List[Long] = List()
- Definition Classes
- MonoidK → SemigroupK
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
def
combineKEval[A](x: F[A], y: Eval[F[A]]): Eval[F[A]]
Similar to combineK but uses Eval to allow for laziness in the second argument.
Similar to combineK but uses Eval to allow for laziness in the second argument. This can allow for "short-circuiting" of computations.
NOTE: the default implementation of
combineKEval
does not short-circuit computations. For data structures that can benefit from laziness, SemigroupK instances should override this method.In the following example,
x.combineK(bomb)
would result in an error, butcombineKEval
"short-circuits" the computation.x
isSome
and thus the result ofbomb
doesn't even need to be evaluated in order to determine that the result ofcombineKEval
should bex
.scala> import cats.{Eval, Later} scala> import cats.implicits._ scala> val bomb: Eval[Option[Int]] = Later(sys.error("boom")) scala> val x: Option[Int] = Some(42) scala> x.combineKEval(bomb).value res0: Option[Int] = Some(42)
- Definition Classes
- SemigroupK
-
def
compose[G[_]]: MonoidK[[α]F[G[α]]]
Given a kind G, create an "composed" MonoidK[F[G[_]]
Given a kind G, create an "composed" MonoidK[F[G[_]]
Example:
scala> import cats.implicits._ scala> val monoidK = MonoidK[List].compose[Option] scala> monoidK.combineK(List(Some(1)), List(Some(2), None)) res0: List[Option[Int]] = List(Some(1), Some(2), None)
- Definition Classes
- MonoidK → SemigroupK
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
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()
-
def
sum[A, B](fa: F[A], fb: F[B])(implicit F: Functor[F]): F[Either[A, B]]
Combines
F[A]
andF[B]
into aF[Either[A,B]]]
.Combines
F[A]
andF[B]
into aF[Either[A,B]]]
.Example:
scala> import cats.SemigroupK scala> import cats.data.NonEmptyList scala> SemigroupK[NonEmptyList].sum(NonEmptyList.one("abc"), NonEmptyList.one(2)) res0: NonEmptyList[Either[String,Int]] = NonEmptyList(Left(abc), Right(2))
- Definition Classes
- SemigroupK
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()