trait SemigroupK[F[_]] extends Serializable

SemigroupK is a universal semigroup 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. Thus, SemigroupK is like a Semigroup for kinds (i.e. parametrized types).

A SemigroupK[F] can produce a Semigroup[F[A]] for any type A.

Here's how to distinguish Semigroup and SemigroupK:

  • Semigroup[A] allows two A values to be combined.
  • SemigroupK[F] allows two F[A] values to be combined, for any A. The combination operation just depends on the structure of F, but not the structure of A.
Self Type
SemigroupK[F]
Linear Supertypes
Serializable, Serializable, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. SemigroupK
  2. Serializable
  3. Serializable
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. 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)
    Annotations
    @op( "<+>" , true )
  2. abstract def getClass(): Class[_]
    Definition Classes
    Any

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    Any
  2. final def ##(): Int
    Definition Classes
    Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    Any
  4. def algebra[A]: Semigroup[F[A]]

    Given a type A, create a concrete Semigroup[F[A]].

    Given a type A, create a concrete Semigroup[F[A]].

    Example:

    scala> import cats.implicits._
    scala> val s: Semigroup[List[Int]] = SemigroupK[List].algebra[Int]
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def compose[G[_]]: SemigroupK[[α]F[G[α]]]

    "Compose" with a G[_] type to form a SemigroupK for λ[α => F[G[α]]].

    "Compose" with a G[_] type to form a SemigroupK for λ[α => F[G[α]]]. Note that this universally works for any G, because the "inner" structure isn't considered when combining two instances.

    Example:

    scala> import cats.implicits._
    scala> type ListOption[A] = List[Option[A]]
    scala> val s: SemigroupK[ListOption] = SemigroupK[List].compose[Option]
    scala> s.combineK(List(Some(1), None, Some(2)), List(Some(3), None))
    res0: List[Option[Int]] = List(Some(1), None, Some(2), Some(3), None)
  7. def equals(arg0: Any): Boolean
    Definition Classes
    Any
  8. def hashCode(): Int
    Definition Classes
    Any
  9. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  10. def toString(): String
    Definition Classes
    Any

Inherited from Serializable

Inherited from Serializable

Inherited from Any

Ungrouped