catsInstances
Value members
Concrete methods
Inherited methods
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
- Inherited from:
- MonoidK
Given a sequence of as
, sum them using the monoidK and return the total.
Given a sequence of as
, sum them using the monoidK and return the total.
Example:
scala> MonoidK[List].combineAllK(List(List("One"), List("Two"), List("Three")))
res0: List[String] = List(One, Two, Three)
scala> MonoidK[List].combineAllK[String](List.empty)
res1: List[String] = List()
- Inherited from:
- MonoidK
Given a sequence of as
, combine them and return the total.
Given a sequence of as
, combine them and return the total.
If the sequence is empty, returns None. Otherwise, returns Some(total).
Example:
scala> SemigroupK[List].combineAllOptionK(List(List("One"), List("Two"), List("Three")))
res0: Option[List[String]] = Some(List(One, Two, Three))
scala> SemigroupK[List].combineAllOptionK[String](List.empty)
res1: Option[List[String]] = None
- Inherited from:
- SemigroupK
Similar to combineK but uses Eval to allow for laziness in the second argument. This can allow for "short-circuiting" of computations.
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,
but combineKEval
"short-circuits" the computation. x
is Some
and thus the
result of bomb
doesn't even need to be evaluated in order to determine
that the result of combineKEval
should be x
.
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)
- Inherited from:
- SemigroupK
Return a
combined with itself n
times.
Return a
combined with itself n
times.
Example:
scala> SemigroupK[List].combineNK(List(1), 5)
res0: List[Int] = List(1, 1, 1, 1, 1)
scala> MonoidK[List].combineNK(List("ha"), 0)
res1: List[String] = List()
- Definition Classes
- MonoidK -> SemigroupK
- Inherited from:
- MonoidK
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
- Inherited from:
- MonoidK
Compose Invariant F[_]
and G[_]
then produce Invariant[F[G[_]]]
using their imap
.
Compose Invariant F[_]
and G[_]
then produce Invariant[F[G[_]]]
using their imap
.
Example:
scala> import cats.implicits._
scala> import scala.concurrent.duration._
scala> val durSemigroupList: Semigroup[List[FiniteDuration]] =
| Invariant[Semigroup].compose[List].imap(Semigroup[List[Long]])(Duration.fromNanos)(_.toNanos)
scala> durSemigroupList.combine(List(2.seconds, 3.seconds), List(4.seconds))
res1: List[FiniteDuration] = List(2 seconds, 3 seconds, 4 seconds)
- Inherited from:
- Invariant
Compose Invariant F[_]
and Contravariant G[_]
then produce Invariant[F[G[_]]]
using F's imap
and G's contramap
.
Compose Invariant F[_]
and Contravariant G[_]
then produce Invariant[F[G[_]]]
using F's imap
and G's contramap
.
Example:
scala> import cats.implicits._
scala> import scala.concurrent.duration._
scala> type ToInt[T] = T => Int
scala> val durSemigroupToInt: Semigroup[ToInt[FiniteDuration]] =
| Invariant[Semigroup]
| .composeContravariant[ToInt]
| .imap(Semigroup[ToInt[Long]])(Duration.fromNanos)(_.toNanos)
// semantically equal to (2.seconds.toSeconds.toInt + 1) + (2.seconds.toSeconds.toInt * 2) = 7
scala> durSemigroupToInt.combine(_.toSeconds.toInt + 1, _.toSeconds.toInt * 2)(2.seconds)
res1: Int = 7
- Inherited from:
- Invariant
- Definition Classes
- ContravariantSemigroupal -> Contravariant -> Invariant
- Inherited from:
- ContravariantSemigroupal
Tests if a
is the identity.
Tests if a
is the identity.
Example:
scala> MonoidK[List].isEmpty(List.empty[String])
res0: Boolean = true
scala> MonoidK[List].isEmpty(List("something"))
res1: Boolean = false
- Inherited from:
- MonoidK
Lifts natural subtyping contravariance of contravariant Functors. could be implemented as contramap(identity), but the Functor laws say this is equivalent
Lifts natural subtyping contravariance of contravariant Functors. could be implemented as contramap(identity), but the Functor laws say this is equivalent
- Inherited from:
- Contravariant
point
lifts any value into a Monoidal Functor.
point
lifts any value into a Monoidal Functor.
Example:
scala> import cats.implicits._
scala> InvariantMonoidal[Option].point(10)
res0: Option[Int] = Some(10)
- Inherited from:
- InvariantMonoidal
Combines F[A]
and F[B]
into a F[Either[A,B]]]
.
Combines F[A]
and F[B]
into a F[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))
- Inherited from:
- SemigroupK