trait FlatMap[F[_]] extends Apply[F]
FlatMap type class gives us flatMap, which allows us to have a value in a context (F[A]) and then feed that into a function that takes a normal value and returns a value in a context (A => F[B]).
One motivation for separating this out from Monad is that there are situations where we can implement flatMap but not pure. For example, we can implement map or flatMap that transforms the values of Map[K, *], but we can't implement pure (because we wouldn't know what key to use when instantiating the new Map).
- Annotations
- @implicitNotFound( ... ) @typeclass( ... , ... )
- Source
- FlatMap.scala
- See also
See https://github.com/typelevel/cats/issues/3 for some discussion. Must obey the laws defined in cats.laws.FlatMapLaws.
- Grouped
- Alphabetic
- By Inheritance
- FlatMap
- Apply
- ApplyArityFunctions
- InvariantSemigroupal
- Semigroupal
- Functor
- Invariant
- Serializable
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
- abstract def flatMap[A, B](fa: F[A])(f: (A) ⇒ F[B]): F[B]
-
abstract
def
map[A, B](fa: F[A])(f: (A) ⇒ B): F[B]
- Definition Classes
- Functor
-
abstract
def
tailRecM[A, B](a: A)(f: (A) ⇒ F[Either[A, B]]): F[B]
Keeps calling
f
until ascala.util.Right[B]
is returned.Keeps calling
f
until ascala.util.Right[B]
is returned.Based on Phil Freeman's Stack Safety for Free.
Implementations of this method should use constant stack space relative to
f
.
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
*>[A, B](fa: F[A])(fb: F[B]): F[B]
Alias for productR.
-
final
def
<*[A, B](fa: F[A])(fb: F[B]): F[A]
Alias for productL.
-
final
def
<*>[A, B](ff: F[(A) ⇒ B])(fa: F[A]): F[B]
Alias for ap.
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
ap[A, B](ff: F[(A) ⇒ B])(fa: F[A]): F[B]
Given a value and a function in the Apply context, applies the function to the value.
Given a value and a function in the Apply context, applies the function to the value.
Example:
scala> import cats.implicits._ scala> val someF: Option[Int => Long] = Some(_.toLong + 1L) scala> val noneF: Option[Int => Long] = None scala> val someInt: Option[Int] = Some(3) scala> val noneInt: Option[Int] = None scala> Apply[Option].ap(someF)(someInt) res0: Option[Long] = Some(4) scala> Apply[Option].ap(noneF)(someInt) res1: Option[Long] = None scala> Apply[Option].ap(someF)(noneInt) res2: Option[Long] = None scala> Apply[Option].ap(noneF)(noneInt) res3: Option[Long] = None
-
def
ap10[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, Z](f: F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap11[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, Z](f: F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap12[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, Z](f: F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap13[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, Z](f: F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap14[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, Z](f: F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap15[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, Z](f: F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap16[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, Z](f: F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap17[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, Z](f: F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap18[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, Z](f: F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16], f17: F[A17]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap19[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, Z](f: F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16], f17: F[A17], f18: F[A18]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap2[A, B, Z](ff: F[(A, B) ⇒ Z])(fa: F[A], fb: F[B]): F[Z]
ap2 is a binary version of ap, defined in terms of ap.
-
def
ap20[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, Z](f: F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16], f17: F[A17], f18: F[A18], f19: F[A19]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap21[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, Z](f: F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16], f17: F[A17], f18: F[A18], f19: F[A19], f20: F[A20]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap22[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, Z](f: F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16], f17: F[A17], f18: F[A18], f19: F[A19], f20: F[A20], f21: F[A21]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap3[A0, A1, A2, Z](f: F[(A0, A1, A2) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap4[A0, A1, A2, A3, Z](f: F[(A0, A1, A2, A3) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap5[A0, A1, A2, A3, A4, Z](f: F[(A0, A1, A2, A3, A4) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap6[A0, A1, A2, A3, A4, A5, Z](f: F[(A0, A1, A2, A3, A4, A5) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap7[A0, A1, A2, A3, A4, A5, A6, Z](f: F[(A0, A1, A2, A3, A4, A5, A6) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap8[A0, A1, A2, A3, A4, A5, A6, A7, Z](f: F[(A0, A1, A2, A3, A4, A5, A6, A7) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
ap9[A0, A1, A2, A3, A4, A5, A6, A7, A8, Z](f: F[(A0, A1, A2, A3, A4, A5, A6, A7, A8) ⇒ Z])(f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8]): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
as[A, B](fa: F[A], b: B): F[B]
Replaces the
A
value inF[A]
with the supplied value.Replaces the
A
value inF[A]
with the supplied value.Example:
scala> import cats.Functor scala> import cats.implicits.catsStdInstancesForList scala> Functor[List].as(List(1,2,3), "hello") res0: List[String] = List(hello, hello, hello)
- Definition Classes
- Functor
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native() @IntrinsicCandidate()
-
def
compose[G[_]](implicit arg0: Apply[G]): Apply[[α]F[G[α]]]
Compose an
Apply[F]
and anApply[G]
into anApply[λ[α => F[G[α]]]]
.Compose an
Apply[F]
and anApply[G]
into anApply[λ[α => F[G[α]]]]
.Example:
scala> import cats.implicits._ scala> val alo = Apply[List].compose[Option] scala> alo.product(List(None, Some(true), Some(false)), List(Some(2), None)) res1: List[Option[(Boolean, Int)]] = List(None, None, Some((true,2)), None, Some((false,2)), None)
- Definition Classes
- Apply
-
def
compose[G[_]](implicit arg0: Functor[G]): Functor[[α]F[G[α]]]
- Definition Classes
- Functor
-
def
compose[G[_]](implicit arg0: Invariant[G]): Invariant[[α]F[G[α]]]
Compose Invariant
F[_]
andG[_]
then produceInvariant[F[G[_]]]
using theirimap
.Compose Invariant
F[_]
andG[_]
then produceInvariant[F[G[_]]]
using theirimap
.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)
- Definition Classes
- Invariant
-
def
composeApply[G[_]](implicit arg0: Apply[G]): InvariantSemigroupal[[α]F[G[α]]]
- Definition Classes
- InvariantSemigroupal
-
def
composeContravariant[G[_]](implicit arg0: Contravariant[G]): Contravariant[[α]F[G[α]]]
Compose Invariant
F[_]
and ContravariantG[_]
then produceInvariant[F[G[_]]]
using F'simap
and G'scontramap
.Compose Invariant
F[_]
and ContravariantG[_]
then produceInvariant[F[G[_]]]
using F'simap
and G'scontramap
.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
-
def
composeFunctor[G[_]](implicit arg0: Functor[G]): Invariant[[α]F[G[α]]]
Compose Invariant
F[_]
and FunctorG[_]
then produceInvariant[F[G[_]]]
using F'simap
and G'smap
.Compose Invariant
F[_]
and FunctorG[_]
then produceInvariant[F[G[_]]]
using F'simap
and G'smap
.Example:
scala> import cats.implicits._ scala> import scala.concurrent.duration._ scala> val durSemigroupList: Semigroup[List[FiniteDuration]] = | Invariant[Semigroup] | .composeFunctor[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)
- Definition Classes
- Invariant
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
flatTap[A, B](fa: F[A])(f: (A) ⇒ F[B]): F[A]
Apply a monadic function and discard the result while keeping the effect.
Apply a monadic function and discard the result while keeping the effect.
scala> import cats._, implicits._ scala> Option(1).flatTap(_ => None) res0: Option[Int] = None scala> Option(1).flatTap(_ => Some("123")) res1: Option[Int] = Some(1) scala> def nCats(n: Int) = List.fill(n)("cat") nCats: (n: Int)List[String] scala> List[Int](0).flatTap(nCats) res2: List[Int] = List() scala> List[Int](4).flatTap(nCats) res3: List[Int] = List(4, 4, 4, 4)
-
def
flatten[A](ffa: F[F[A]]): F[A]
"flatten" a nested
F
ofF
structure into a single-layerF
structure."flatten" a nested
F
ofF
structure into a single-layerF
structure.This is also commonly called
join
.Example:
scala> import cats.Eval scala> import cats.implicits._ scala> val nested: Eval[Eval[Int]] = Eval.now(Eval.now(3)) scala> val flattened: Eval[Int] = nested.flatten scala> flattened.value res0: Int = 3
-
final
def
fmap[A, B](fa: F[A])(f: (A) ⇒ B): F[B]
Alias for map, since map can't be injected as syntax if the implementing type already had a built-in
.map
method.Alias for map, since map can't be injected as syntax if the implementing type already had a built-in
.map
method.Example:
scala> import cats.implicits._ scala> val m: Map[Int, String] = Map(1 -> "hi", 2 -> "there", 3 -> "you") scala> m.fmap(_ ++ "!") res0: Map[Int,String] = Map(1 -> hi!, 2 -> there!, 3 -> you!)
- Definition Classes
- Functor
-
def
foreverM[A, B](fa: F[A]): F[B]
Like an infinite loop of >> calls.
Like an infinite loop of >> calls. This is most useful effect loops that you want to run forever in for instance a server.
This will be an infinite loop, or it will return an F[Nothing].
Be careful using this. For instance, a List of length k will produce a list of length k^n at iteration n. This means if k = 0, we return an empty list, if k = 1, we loop forever allocating single element lists, but if we have a k > 1, we will allocate exponentially increasing memory and very quickly OOM.
- Annotations
- @noop()
-
def
fproduct[A, B](fa: F[A])(f: (A) ⇒ B): F[(A, B)]
Tuple the values in fa with the result of applying a function with the value
Tuple the values in fa with the result of applying a function with the value
Example:
scala> import cats.Functor scala> import cats.implicits.catsStdInstancesForOption scala> Functor[Option].fproduct(Option(42))(_.toString) res0: Option[(Int, String)] = Some((42,42))
- Definition Classes
- Functor
-
def
fproductLeft[A, B](fa: F[A])(f: (A) ⇒ B): F[(B, A)]
Pair the result of function application with
A
.Pair the result of function application with
A
.Example:
scala> import cats.Functor scala> import cats.implicits.catsStdInstancesForOption scala> Functor[Option].fproductLeft(Option(42))(_.toString) res0: Option[(String, Int)] = Some((42,42))
- Definition Classes
- Functor
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
-
def
ifF[A](fb: F[Boolean])(ifTrue: ⇒ A, ifFalse: ⇒ A): F[A]
Lifts
if
to FunctorLifts
if
to FunctorExample:
scala> import cats.Functor scala> import cats.implicits.catsStdInstancesForList scala> Functor[List].ifF(List(true, false, false))(1, 0) res0: List[Int] = List(1, 0, 0)
- Definition Classes
- Functor
- Annotations
- @noop()
-
def
ifM[B](fa: F[Boolean])(ifTrue: ⇒ F[B], ifFalse: ⇒ F[B]): F[B]
if
lifted into monad.if
lifted into monad.- Annotations
- @noop()
-
def
imap[A, B](fa: F[A])(f: (A) ⇒ B)(g: (B) ⇒ A): F[B]
Transform an
F[A]
into anF[B]
by providing a transformation fromA
toB
and one fromB
toA
.Transform an
F[A]
into anF[B]
by providing a transformation fromA
toB
and one fromB
toA
.Example:
scala> import cats.implicits._ scala> import scala.concurrent.duration._ scala> val durSemigroup: Semigroup[FiniteDuration] = | Invariant[Semigroup].imap(Semigroup[Long])(Duration.fromNanos)(_.toNanos) scala> durSemigroup.combine(2.seconds, 3.seconds) res1: FiniteDuration = 5 seconds
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
iterateForeverM[A, B](a: A)(f: (A) ⇒ F[A]): F[B]
iterateForeverM is almost exclusively useful for effect types.
iterateForeverM is almost exclusively useful for effect types. For instance, A may be some state, we may take the current state, run some effect to get a new state and repeat.
- Annotations
- @noop()
-
def
lift[A, B](f: (A) ⇒ B): (F[A]) ⇒ F[B]
Lift a function f to operate on Functors
Lift a function f to operate on Functors
Example:
scala> import cats.Functor scala> import cats.implicits.catsStdInstancesForOption scala> val o = Option(42) scala> Functor[Option].lift((x: Int) => x + 10)(o) res0: Option[Int] = Some(52)
- Definition Classes
- Functor
-
def
map10[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9])(f: (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map11[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10])(f: (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map12[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11])(f: (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map13[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12])(f: (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map14[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13])(f: (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map15[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14])(f: (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map16[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15])(f: (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map17[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16])(f: (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map18[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16], f17: F[A17])(f: (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map19[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16], f17: F[A17], f18: F[A18])(f: (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map2[A, B, Z](fa: F[A], fb: F[B])(f: (A, B) ⇒ Z): F[Z]
Applies the pure (binary) function f to the effectful values fa and fb.
Applies the pure (binary) function f to the effectful values fa and fb.
map2 can be seen as a binary version of cats.Functor#map.
Example:
scala> import cats.implicits._ scala> val someInt: Option[Int] = Some(3) scala> val noneInt: Option[Int] = None scala> val someLong: Option[Long] = Some(4L) scala> val noneLong: Option[Long] = None scala> Apply[Option].map2(someInt, someLong)((i, l) => i.toString + l.toString) res0: Option[String] = Some(34) scala> Apply[Option].map2(someInt, noneLong)((i, l) => i.toString + l.toString) res0: Option[String] = None scala> Apply[Option].map2(noneInt, noneLong)((i, l) => i.toString + l.toString) res0: Option[String] = None scala> Apply[Option].map2(noneInt, someLong)((i, l) => i.toString + l.toString) res0: Option[String] = None
-
def
map20[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16], f17: F[A17], f18: F[A18], f19: F[A19])(f: (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map21[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16], f17: F[A17], f18: F[A18], f19: F[A19], f20: F[A20])(f: (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map22[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16], f17: F[A17], f18: F[A18], f19: F[A19], f20: F[A20], f21: F[A21])(f: (A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map2Eval[A, B, Z](fa: F[A], fb: Eval[F[B]])(f: (A, B) ⇒ Z): Eval[F[Z]]
Similar to map2 but uses Eval to allow for laziness in the
F[B]
argument.Similar to map2 but uses Eval to allow for laziness in the
F[B]
argument. This can allow for "short-circuiting" of computations.NOTE: the default implementation of
map2Eval
does not short-circuit computations. For data structures that can benefit from laziness, Apply instances should override this method.In the following example,
x.map2(bomb)(_ + _)
would result in an error, butmap2Eval
"short-circuits" the computation.x
isNone
and thus the result ofbomb
doesn't even need to be evaluated in order to determine that the result ofmap2Eval
should beNone
.scala> import cats.{Eval, Later} scala> import cats.implicits._ scala> val bomb: Eval[Option[Int]] = Later(sys.error("boom")) scala> val x: Option[Int] = None scala> x.map2Eval(bomb)(_ + _).value res0: Option[Int] = None
-
def
map3[A0, A1, A2, Z](f0: F[A0], f1: F[A1], f2: F[A2])(f: (A0, A1, A2) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map4[A0, A1, A2, A3, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3])(f: (A0, A1, A2, A3) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map5[A0, A1, A2, A3, A4, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4])(f: (A0, A1, A2, A3, A4) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map6[A0, A1, A2, A3, A4, A5, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5])(f: (A0, A1, A2, A3, A4, A5) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map7[A0, A1, A2, A3, A4, A5, A6, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6])(f: (A0, A1, A2, A3, A4, A5, A6) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map8[A0, A1, A2, A3, A4, A5, A6, A7, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7])(f: (A0, A1, A2, A3, A4, A5, A6, A7) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
map9[A0, A1, A2, A3, A4, A5, A6, A7, A8, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8])(f: (A0, A1, A2, A3, A4, A5, A6, A7, A8) ⇒ Z): F[Z]
- Definition Classes
- ApplyArityFunctions
-
def
mproduct[A, B](fa: F[A])(f: (A) ⇒ F[B]): F[(A, B)]
Pair
A
with the result of function application.Pair
A
with the result of function application.Example:
scala> import cats.implicits._ scala> List("12", "34", "56").mproduct(_.toList) res0: List[(String, Char)] = List((12,1), (12,2), (34,3), (34,4), (56,5), (56,6))
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
-
def
product[A, B](fa: F[A], fb: F[B]): F[(A, B)]
Combine an
F[A]
and anF[B]
into anF[(A, B)]
that maintains the effects of bothfa
andfb
.Combine an
F[A]
and anF[B]
into anF[(A, B)]
that maintains the effects of bothfa
andfb
.Example:
scala> import cats.implicits._ scala> val noneInt: Option[Int] = None scala> val some3: Option[Int] = Some(3) scala> val noneString: Option[String] = None scala> val someFoo: Option[String] = Some("foo") scala> Semigroupal[Option].product(noneInt, noneString) res0: Option[(Int, String)] = None scala> Semigroupal[Option].product(noneInt, someFoo) res1: Option[(Int, String)] = None scala> Semigroupal[Option].product(some3, noneString) res2: Option[(Int, String)] = None scala> Semigroupal[Option].product(some3, someFoo) res3: Option[(Int, String)] = Some((3,foo))
- Definition Classes
- FlatMap → Apply → Semigroupal
-
def
productL[A, B](fa: F[A])(fb: F[B]): F[A]
Compose two actions, discarding any value produced by the second.
Compose two actions, discarding any value produced by the second.
- Definition Classes
- FlatMap → Apply
- See also
productR to discard the value of the first instead. Example:
scala> import cats.implicits._ scala> import cats.data.Validated scala> import Validated.{Valid, Invalid} scala> type ErrOr[A] = Validated[String, A] scala> val validInt: ErrOr[Int] = Valid(3) scala> val validBool: ErrOr[Boolean] = Valid(true) scala> val invalidInt: ErrOr[Int] = Invalid("Invalid int.") scala> val invalidBool: ErrOr[Boolean] = Invalid("Invalid boolean.") scala> Apply[ErrOr].productL(validInt)(validBool) res0: ErrOr[Int] = Valid(3) scala> Apply[ErrOr].productL(invalidInt)(validBool) res1: ErrOr[Int] = Invalid(Invalid int.) scala> Apply[ErrOr].productL(validInt)(invalidBool) res2: ErrOr[Int] = Invalid(Invalid boolean.) scala> Apply[ErrOr].productL(invalidInt)(invalidBool) res3: ErrOr[Int] = Invalid(Invalid int.Invalid boolean.)
-
def
productLEval[A, B](fa: F[A])(fb: Eval[F[B]]): F[A]
Sequentially compose two actions, discarding any value produced by the second.
Sequentially compose two actions, discarding any value produced by the second. This variant of productL also lets you define the evaluation strategy of the second action. For instance you can evaluate it only after the first action has finished:
scala> import cats.Eval scala> import cats.implicits._ scala> var count = 0 scala> val fa: Option[Int] = Some(3) scala> def fb: Option[Unit] = Some(count += 1) scala> fa.productLEval(Eval.later(fb)) res0: Option[Int] = Some(3) scala> assert(count == 1) scala> none[Int].productLEval(Eval.later(fb)) res1: Option[Int] = None scala> assert(count == 1)
-
def
productR[A, B](fa: F[A])(fb: F[B]): F[B]
Compose two actions, discarding any value produced by the first.
Compose two actions, discarding any value produced by the first.
- Definition Classes
- FlatMap → Apply
- See also
productL to discard the value of the second instead. Example:
scala> import cats.implicits._ scala> import cats.data.Validated scala> import Validated.{Valid, Invalid} scala> type ErrOr[A] = Validated[String, A] scala> val validInt: ErrOr[Int] = Valid(3) scala> val validBool: ErrOr[Boolean] = Valid(true) scala> val invalidInt: ErrOr[Int] = Invalid("Invalid int.") scala> val invalidBool: ErrOr[Boolean] = Invalid("Invalid boolean.") scala> Apply[ErrOr].productR(validInt)(validBool) res0: ErrOr[Boolean] = Valid(true) scala> Apply[ErrOr].productR(invalidInt)(validBool) res1: ErrOr[Boolean] = Invalid(Invalid int.) scala> Apply[ErrOr].productR(validInt)(invalidBool) res2: ErrOr[Boolean] = Invalid(Invalid boolean.) scala> Apply[ErrOr].productR(invalidInt)(invalidBool) res3: ErrOr[Boolean] = Invalid(Invalid int.Invalid boolean.)
-
def
productREval[A, B](fa: F[A])(fb: Eval[F[B]]): F[B]
Sequentially compose two actions, discarding any value produced by the first.
Sequentially compose two actions, discarding any value produced by the first. This variant of productR also lets you define the evaluation strategy of the second action. For instance you can evaluate it only after the first action has finished:
scala> import cats.Eval scala> import cats.implicits._ scala> val fa: Option[Int] = Some(3) scala> def fb: Option[String] = Some("foo") scala> fa.productREval(Eval.later(fb)) res0: Option[String] = Some(foo)
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
tuple10[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9]): F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple11[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10]): F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple12[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11]): F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple13[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12]): F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple14[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13]): F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple15[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14]): F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple16[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15]): F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple17[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16]): F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple18[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16], f17: F[A17]): F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple19[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16], f17: F[A17], f18: F[A18]): F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple2[A, B](f1: F[A], f2: F[B]): F[(A, B)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple20[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16], f17: F[A17], f18: F[A18], f19: F[A19]): F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple21[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16], f17: F[A17], f18: F[A18], f19: F[A19], f20: F[A20]): F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple22[A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8], f9: F[A9], f10: F[A10], f11: F[A11], f12: F[A12], f13: F[A13], f14: F[A14], f15: F[A15], f16: F[A16], f17: F[A17], f18: F[A18], f19: F[A19], f20: F[A20], f21: F[A21]): F[(A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple3[A0, A1, A2, Z](f0: F[A0], f1: F[A1], f2: F[A2]): F[(A0, A1, A2)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple4[A0, A1, A2, A3, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3]): F[(A0, A1, A2, A3)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple5[A0, A1, A2, A3, A4, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4]): F[(A0, A1, A2, A3, A4)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple6[A0, A1, A2, A3, A4, A5, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5]): F[(A0, A1, A2, A3, A4, A5)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple7[A0, A1, A2, A3, A4, A5, A6, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6]): F[(A0, A1, A2, A3, A4, A5, A6)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple8[A0, A1, A2, A3, A4, A5, A6, A7, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7]): F[(A0, A1, A2, A3, A4, A5, A6, A7)]
- Definition Classes
- ApplyArityFunctions
-
def
tuple9[A0, A1, A2, A3, A4, A5, A6, A7, A8, Z](f0: F[A0], f1: F[A1], f2: F[A2], f3: F[A3], f4: F[A4], f5: F[A5], f6: F[A6], f7: F[A7], f8: F[A8]): F[(A0, A1, A2, A3, A4, A5, A6, A7, A8)]
- Definition Classes
- ApplyArityFunctions
-
def
tupleLeft[A, B](fa: F[A], b: B): F[(B, A)]
Tuples the
A
value inF[A]
with the suppliedB
value, with theB
value on the left.Tuples the
A
value inF[A]
with the suppliedB
value, with theB
value on the left.Example:
scala> import scala.collection.immutable.Queue scala> import cats.Functor scala> import cats.implicits.catsStdInstancesForQueue scala> Functor[Queue].tupleLeft(Queue("hello", "world"), 42) res0: scala.collection.immutable.Queue[(Int, String)] = Queue((42,hello), (42,world))
- Definition Classes
- Functor
-
def
tupleRight[A, B](fa: F[A], b: B): F[(A, B)]
Tuples the
A
value inF[A]
with the suppliedB
value, with theB
value on the right.Tuples the
A
value inF[A]
with the suppliedB
value, with theB
value on the right.Example:
scala> import scala.collection.immutable.Queue scala> import cats.Functor scala> import cats.implicits.catsStdInstancesForQueue scala> Functor[Queue].tupleRight(Queue("hello", "world"), 42) res0: scala.collection.immutable.Queue[(String, Int)] = Queue((hello,42), (world,42))
- Definition Classes
- Functor
-
def
untilDefinedM[A](foa: F[Option[A]]): F[A]
This repeats an F until we get defined values.
This repeats an F until we get defined values. This can be useful for polling type operations on State (or RNG) Monads, or in effect monads.
- Annotations
- @noop()
-
def
unzip[A, B](fab: F[(A, B)]): (F[A], F[B])
Un-zips an
F[(A, B)]
consisting of element pairs or Tuple2 into two separate F's tupled.Un-zips an
F[(A, B)]
consisting of element pairs or Tuple2 into two separate F's tupled.NOTE: Check for effect duplication, possibly memoize before
scala> import cats.Functor scala> import cats.implicits.catsStdInstancesForList scala> Functor[List].unzip(List((1,2), (3, 4))) res0: (List[Int], List[Int]) = (List(1, 3),List(2, 4))
- Definition Classes
- Functor
- Annotations
- @noop()
-
def
void[A](fa: F[A]): F[Unit]
Empty the fa of the values, preserving the structure
Empty the fa of the values, preserving the structure
Example:
scala> import cats.Functor scala> import cats.implicits.catsStdInstancesForList scala> Functor[List].void(List(1,2,3)) res0: List[Unit] = List((), (), ())
- Definition Classes
- Functor
-
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()
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
widen[A, B >: A](fa: F[A]): F[B]
Lifts natural subtyping covariance of covariant Functors.
Lifts natural subtyping covariance of covariant Functors.
NOTE: In certain (perhaps contrived) situations that rely on universal equality this can result in a
ClassCastException
, because it is implemented as a type cast. It could be implemented asmap(identity)
, but according to the functor laws, that should be equal tofa
, and a type cast is often much more performant. See this example ofwiden
creating aClassCastException
.Example:
scala> import cats.Functor scala> import cats.implicits.catsStdInstancesForOption scala> val s = Some(42) scala> Functor[Option].widen(s) res0: Option[Int] = Some(42)
- Definition Classes
- Functor
Deprecated Value Members
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] ) @Deprecated
- Deprecated
-
def
ifA[A](fcond: F[Boolean])(ifTrue: F[A], ifFalse: F[A]): F[A]
- Definition Classes
- Apply
- Annotations
- @noop() @deprecated
- Deprecated
(Since version 2.6.2) Dangerous method, use ifM (a flatMap) or ifF (a map) instead
Inherited from Apply[F]
Inherited from ApplyArityFunctions[F]
Inherited from InvariantSemigroupal[F]
Inherited from Semigroupal[F]
Inherited from Functor[F]
Inherited from Invariant[F]
Inherited from Serializable
Inherited from Serializable
Inherited from AnyRef
Inherited from Any
Ungrouped
ap arity
Higher-arity ap methods
map arity
Higher-arity map methods
tuple arity
Higher-arity tuple methods