GenSpawnLaws

trait GenSpawnLaws[F[_], E] extends MonadCancelLaws[F, E] with UniqueLaws[F]
Companion:
object
Source:
GenSpawnLaws.scala
trait UniqueLaws[F]
trait MonadCancelLaws[F, E]
trait MonadErrorLaws[F, E]
trait MonadLaws[F]
trait FlatMapLaws[F]
trait ApplyLaws[F]
trait FunctorLaws[F]
trait InvariantLaws[F]
class Object
trait Matchable
class Any
trait GenTemporalLaws[F, E]
trait AsyncLaws[F]

Value members

Concrete methods

def fiberJoinIsGuaranteeCase[A](fa0: F[A], f: Outcome[F, E, A] => F[Unit]): IsEq[F[A]]
def forceRNeverIsNever[A](fa: F[A]): IsEq[F[A]]
def neverDominatesOverFlatMap[A](fa: F[A]): IsEq[F[A]]
def raceDerivesFromRacePairLeft[A, B](fa: F[A]): IsEq[F[Either[A, B]]]
def raceDerivesFromRacePairRight[A, B](fb: F[B]): IsEq[F[Either[A, B]]]

Inherited methods

override def adaptErrorPure[A](a: A, f: E => E): IsEq[F[A]]
override def adaptErrorRaise[A](e: E, f: E => E): IsEq[F[A]]
def apProductConsistent[A, B](fa: F[A], f: F[A => B]): IsEq[F[B]]
def applicativeComposition[A, B, C](fa: F[A], fab: F[A => B], fbc: F[B => C]): IsEq[F[C]]

This law is applyComposition stated in terms of pure. It is a combination of applyComposition and applicativeMap and hence not strictly necessary.

This law is applyComposition stated in terms of pure. It is a combination of applyComposition and applicativeMap and hence not strictly necessary.

Inherited from:
ApplicativeLaws
Source:
ApplicativeLaws.scala
def applicativeErrorHandle[A](e: E, f: E => A): IsEq[F[A]]
def applicativeErrorHandleWith[A](e: E, f: E => F[A]): IsEq[F[A]]
def applicativeHomomorphism[A, B](a: A, f: A => B): IsEq[F[B]]
def applicativeIdentity[A](fa: F[A]): IsEq[F[A]]
def applicativeInterchange[A, B](a: A, ff: F[A => B]): IsEq[F[B]]
def applicativeMap[A, B](fa: F[A], f: A => B): IsEq[F[B]]
def applicativeUnit[A](a: A): IsEq[F[A]]
def applyComposition[A, B, C](fa: F[A], fab: F[A => B], fbc: F[B => C]): IsEq[F[C]]
Inherited from:
ApplyLaws
Source:
ApplyLaws.scala
def covariantComposition[A, B, C](fa: F[A], f: A => B, g: B => C): IsEq[F[C]]
Inherited from:
FunctorLaws
Source:
FunctorLaws.scala
def covariantIdentity[A](fa: F[A]): IsEq[F[A]]
Inherited from:
FunctorLaws
Source:
FunctorLaws.scala
def flatMapAssociativity[A, B, C](fa: F[A], f: A => F[B], g: B => F[C]): IsEq[F[C]]
Inherited from:
FlatMapLaws
Source:
FlatMapLaws.scala
def flatMapConsistentApply[A, B](fa: F[A], fab: F[A => B]): IsEq[F[B]]
Inherited from:
FlatMapLaws
Source:
FlatMapLaws.scala
def flatMapFromTailRecMConsistency[A, B](fa: F[A], fn: A => F[B]): IsEq[F[B]]

It is possible to implement flatMap from tailRecM and map and it should agree with the flatMap implementation.

It is possible to implement flatMap from tailRecM and map and it should agree with the flatMap implementation.

Inherited from:
FlatMapLaws
Source:
FlatMapLaws.scala
def forceRAssociativity[A, B, C](fa: F[A], fb: F[B], fc: F[C]): IsEq[F[C]]
def forceRCanceledShortCircuits[A](fa: F[A]): IsEq[F[A]]
def forceRDiscardsError[A](e: E, fa: F[A]): IsEq[F[A]]
def forceRDiscardsPure[A, B](a: A, fa: F[B]): IsEq[F[B]]
def guaranteeIsGuaranteeCase[A](fa: F[A], fin: F[Unit]): IsEq[F[A]]
def handleErrorConsistentWithRecover[A](fa: F[A], f: E => A): IsEq[F[A]]
def handleErrorPure[A](a: A, f: E => A): IsEq[F[A]]
def handleErrorWithPure[A](a: A, f: E => F[A]): IsEq[F[A]]
def invariantComposition[A, B, C](fa: F[A], f1: A => B, f2: B => A, g1: B => C, g2: C => B): IsEq[F[C]]
Inherited from:
InvariantLaws
Source:
InvariantLaws.scala
def invariantIdentity[A](fa: F[A]): IsEq[F[A]]
Inherited from:
InvariantLaws
Source:
InvariantLaws.scala
def kleisliAssociativity[A, B, C, D](f: A => F[B], g: B => F[C], h: C => F[D], a: A): IsEq[F[D]]

The composition of cats.data.Kleisli arrows is associative. This is analogous to flatMapAssociativity.

The composition of cats.data.Kleisli arrows is associative. This is analogous to flatMapAssociativity.

Inherited from:
FlatMapLaws
Source:
FlatMapLaws.scala
def kleisliLeftIdentity[A, B](a: A, f: A => F[B]): IsEq[F[B]]

pure is the left identity element under left-to-right composition of cats.data.Kleisli arrows. This is analogous to monadLeftIdentity.

pure is the left identity element under left-to-right composition of cats.data.Kleisli arrows. This is analogous to monadLeftIdentity.

Inherited from:
MonadLaws
Source:
MonadLaws.scala
def kleisliRightIdentity[A, B](a: A, f: A => F[B]): IsEq[F[B]]

pure is the right identity element under left-to-right composition of cats.data.Kleisli arrows. This is analogous to monadRightIdentity.

pure is the right identity element under left-to-right composition of cats.data.Kleisli arrows. This is analogous to monadRightIdentity.

Inherited from:
MonadLaws
Source:
MonadLaws.scala
def map2EvalConsistency[A, B, C](fa: F[A], fb: F[B], f: (A, B) => C): IsEq[F[C]]
Inherited from:
ApplyLaws
Source:
ApplyLaws.scala
def map2ProductConsistency[A, B, C](fa: F[A], fb: F[B], f: (A, B) => C): IsEq[F[C]]
Inherited from:
ApplyLaws
Source:
ApplyLaws.scala
def mapFlatMapCoherence[A, B](fa: F[A], f: A => B): IsEq[F[B]]

Make sure that map and flatMap are consistent.

Make sure that map and flatMap are consistent.

Inherited from:
MonadLaws
Source:
MonadLaws.scala
def monadErrorEnsureConsistency[A](fa: F[A], e: E, p: A => Boolean): IsEq[F[A]]
def monadErrorEnsureOrConsistency[A](fa: F[A], e: A => E, p: A => Boolean): IsEq[F[A]]
def monadErrorLeftZero[A, B](e: E, f: A => F[B]): IsEq[F[B]]
def monadLeftIdentity[A, B](a: A, f: A => F[B]): IsEq[F[B]]
Inherited from:
MonadLaws
Source:
MonadLaws.scala
def monadRightIdentity[A](fa: F[A]): IsEq[F[A]]
Inherited from:
MonadLaws
Source:
MonadLaws.scala
def monoidalLeftIdentity[A](fa: F[A]): (F[(Unit, A)], F[A])
def monoidalRightIdentity[A](fa: F[A]): (F[(A, Unit)], F[A])
def mproductConsistency[A, B](fa: F[A], fb: A => F[B]): IsEq[F[(A, B)]]
Inherited from:
FlatMapLaws
Source:
FlatMapLaws.scala
def onCancelImpliesUncancelable[A](fa: F[A], fin1: F[Unit], fin2: F[Unit]): IsEq[F[A]]
def onErrorPure[A](a: A, f: E => F[Unit]): IsEq[F[A]]
def onErrorRaise[A](fa: F[A], e: E, fb: F[Unit]): IsEq[F[A]]
def productLConsistency[A, B](fa: F[A], fb: F[B]): IsEq[F[A]]
Inherited from:
ApplyLaws
Source:
ApplyLaws.scala
def productRConsistency[A, B](fa: F[A], fb: F[B]): IsEq[F[B]]
Inherited from:
ApplyLaws
Source:
ApplyLaws.scala
def pureAttempt[A](a: A): IsEq[F[Either[E, A]]]
def redeemDerivedFromAttemptMap[A, B](fa: F[A], fe: E => B, fs: A => B): IsEq[F[B]]
def redeemWithDerivedFromAttemptFlatMap[A, B](fa: F[A], fe: E => F[B], fs: A => F[B]): IsEq[F[B]]
def rethrowAttempt[A](fa: F[A]): IsEq[F[A]]
def semigroupalAssociativity[A, B, C](fa: F[A], fb: F[B], fc: F[C]): (F[(A, (B, C))], F[((A, B), C)])
def tailRecMConsistentFlatMap[A](a: A, f: A => F[A]): IsEq[F[A]]
Inherited from:
FlatMapLaws
Source:
FlatMapLaws.scala
def uncancelableEliminatesOnCancel[A](fa: F[A], fin: F[Unit]): IsEq[F[A]]
def uncancelableIdentity[A](fa: F[A]): IsEq[F[A]]
def uncancelablePollIsIdentity[A](fa: F[A]): IsEq[F[A]]
Inherited from:
UniqueLaws
Source:
UniqueLaws.scala

Inherited fields

Inherited from:
MonadLaws
Source:
MonadLaws.scala

Implicits

Implicits

implicit val F: GenSpawn[F, E]