trait
BimonadLaws[F[_]] extends MonadLaws[F] with ComonadLaws[F]
Abstract Value Members
-
implicit abstract
def
F: Bimonad[F]
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: Any): Boolean
-
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]]
-
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
applyComposition[A, B, C](fa: F[A], fab: F[(A) ⇒ B], fbc: F[(B) ⇒ C]): IsEq[F[C]]
-
final
def
asInstanceOf[T0]: T0
-
def
cartesianAssociativity[A, B, C](fa: F[A], fb: F[B], fc: F[C]): (F[(A, (B, C))], F[((A, B), C)])
-
def
clone(): AnyRef
-
def
coflatMapAssociativity[A, B, C](fa: F[A], f: (F[A]) ⇒ B, g: (F[B]) ⇒ C): IsEq[F[C]]
-
def
coflatMapIdentity[A, B](fa: F[A]): IsEq[F[F[A]]]
-
def
coflattenCoherence[A, B](fa: F[A], f: (F[A]) ⇒ B): IsEq[F[B]]
-
def
coflattenThroughMap[A](fa: F[A]): IsEq[F[F[F[A]]]]
-
def
cokleisliAssociativity[A, B, C, D](f: (F[A]) ⇒ B, g: (F[B]) ⇒ C, h: (F[C]) ⇒ D, fa: F[A]): IsEq[D]
-
def
cokleisliLeftIdentity[A, B](fa: F[A], f: (F[A]) ⇒ B): IsEq[B]
-
def
cokleisliRightIdentity[A, B](fa: F[A], f: (F[A]) ⇒ B): IsEq[B]
-
def
comonadLeftIdentity[A](fa: F[A]): IsEq[F[A]]
-
def
comonadRightIdentity[A, B](fa: F[A], f: (F[A]) ⇒ B): IsEq[B]
-
def
covariantComposition[A, B, C](fa: F[A], f: (A) ⇒ B, g: (B) ⇒ C): IsEq[F[C]]
-
def
covariantIdentity[A](fa: F[A]): IsEq[F[A]]
-
-
-
def
extractCoflattenIdentity[A](fa: F[A]): IsEq[F[A]]
-
def
extractFlatMapEntwining[A](ffa: F[F[A]]): IsEq[A]
-
def
finalize(): Unit
-
def
flatMapAssociativity[A, B, C](fa: F[A], f: (A) ⇒ F[B], g: (B) ⇒ F[C]): IsEq[F[C]]
-
def
flatMapConsistentApply[A, B](fa: F[A], fab: F[(A) ⇒ B]): IsEq[F[B]]
-
def
followedByConsistency[A, B](fa: F[A], fb: F[B]): IsEq[F[B]]
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
def
invariantComposition[A, B, C](fa: F[A], f1: (A) ⇒ B, f2: (B) ⇒ A, g1: (B) ⇒ C, g2: (C) ⇒ B): IsEq[F[C]]
-
def
invariantIdentity[A](fa: F[A]): IsEq[F[A]]
-
final
def
isInstanceOf[T0]: Boolean
-
def
kleisliAssociativity[A, B, C, D](f: (A) ⇒ F[B], g: (B) ⇒ F[C], h: (C) ⇒ F[D], a: A): IsEq[F[D]]
-
def
kleisliLeftIdentity[A, B](a: A, f: (A) ⇒ F[B]): IsEq[F[B]]
-
def
kleisliRightIdentity[A, B](a: A, f: (A) ⇒ F[B]): IsEq[F[B]]
-
def
mapCoflatMapCoherence[A, B](fa: F[A], f: (A) ⇒ B): IsEq[F[B]]
-
def
mapCoflattenIdentity[A](fa: F[A]): IsEq[F[A]]
-
def
mapFlatMapCoherence[A, B](fa: F[A], f: (A) ⇒ B): IsEq[F[B]]
-
def
monadLeftIdentity[A, B](a: A, f: (A) ⇒ F[B]): IsEq[F[B]]
-
def
monadRightIdentity[A](fa: F[A]): IsEq[F[A]]
-
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)]]
-
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
def
pureCoflatMapEntwining[A](a: A): IsEq[F[F[A]]]
-
def
pureExtractIsId[A](a: A): IsEq[A]
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
tailRecMConsistentFlatMap[A](a: A, f: (A) ⇒ F[A]): IsEq[F[A]]
-
val
tailRecMStackSafety: IsEq[F[Int]]
-
def
toString(): String
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
Laws that must be obeyed by any
Bimonad
.For more information, see definition 4.1 from this paper: http://arxiv.org/pdf/0710.1163v3.pdf