t

cats

# Bifoldable 

### Companion object Bifoldable

#### trait Bifoldable[F[_, _]] extends Serializable

A type class abstracting over types that give rise to two independent cats.Foldables.

Self Type
Bifoldable[F]
Annotations
@implicitNotFound( ... ) @typeclass( ... , ... )
Source
Bifoldable.scala
Linear Supertypes
Serializable, Serializable, AnyRef, Any
Known Subclasses
Ordering
1. Alphabetic
2. By Inheritance
Inherited
1. Bifoldable
2. Serializable
3. Serializable
4. AnyRef
5. Any
1. Hide All
2. Show All
Visibility
1. Public
2. All

### Abstract Value Members

1. abstract def bifoldLeft[A, B, C](fab: F[A, B], c: C)(f: (C, A) ⇒ C, g: (C, B) ⇒ C): C

Collapse the structure with a left-associative function

Collapse the structure with a left-associative function

Example:

scala> import cats.Bifoldable
scala> val fab = (List(1), 2)

Folding by addition to zero:
scala> Bifoldable[Tuple2].bifoldLeft(fab, Option(0))((c, a) => c.map(_ + a.head), (c, b) => c.map(_ + b))
res0: Option[Int] = Some(3)

With syntax extensions, bifoldLeft can be used like:

scala> import cats.implicits._
scala> fab.bifoldLeft(Option(0))((c, a) => c.map(_ + a.head), (c, b) => c.map(_ + b))
res1: Option[Int] = Some(3)
2. abstract def bifoldRight[A, B, C](fab: F[A, B], c: Eval[C])(f: (A, Eval[C]) ⇒ Eval[C], g: (B, Eval[C]) ⇒ Eval[C]): Eval[C]

Collapse the structure with a right-associative function Right associative lazy bifold on F using the folding function 'f' and 'g'.

Collapse the structure with a right-associative function Right associative lazy bifold on F using the folding function 'f' and 'g'.

This method evaluates c lazily (in some cases it will not be needed), and returns a lazy value. We are using (_, Eval[C]) => Eval[C] to support laziness in a stack-safe way. Chained computation should be performed via .map and .flatMap.

For more detailed information about how this method works see the documentation for Eval[_].

Example:

scala> import cats.Bifoldable
scala> val fab = (List(1), 2)

Folding by addition to zero:
scala> val bifolded1 = Bifoldable[Tuple2].bifoldRight(fab, Eval.now(0))((a, c) => c.map(_ + a.head), (b, c) => c.map(_ + b))
scala> bifolded1.value
res0: Int = 3

With syntax extensions, bifoldRight can be used like:

scala> import cats.implicits._
scala> val bifolded2 = fab.bifoldRight(Eval.now(0))((a, c) => c.map(_ + a.head), (b, c) => c.map(_ + b))
scala> bifolded2.value
res1: Int = 3

### Concrete Value Members

1. final def !=(arg0: Any)
Definition Classes
AnyRef → Any
2. final def ##(): Int
Definition Classes
AnyRef → Any
3. final def ==(arg0: Any)
Definition Classes
AnyRef → Any
4. final def asInstanceOf[T0]: T0
Definition Classes
Any
5. def bifold[A, B](fab: F[A, B])(implicit A: Monoid[A], B: Monoid[B]): (A, B)
6. def bifoldMap[A, B, C](fab: F[A, B])(f: (A) ⇒ C, g: (B) ⇒ C)(implicit C: Monoid[C]): C

Collapse the structure by mapping each element to an element of a type that has a cats.Monoid

7. def clone()
Attributes
protected[lang]
Definition Classes
AnyRef
Annotations
@throws( ... ) @native() @IntrinsicCandidate()
8. def compose[G[_, _]](implicit ev: Bifoldable[G]): Bifoldable[[α, β]F[G[α, β], G[α, β]]]
9. final def eq(arg0: AnyRef)
Definition Classes
AnyRef
10. def equals(arg0: Any)
Definition Classes
AnyRef → Any
11. final def getClass(): Class[_]
Definition Classes
AnyRef → Any
Annotations
@native() @IntrinsicCandidate()
12. def hashCode(): Int
Definition Classes
AnyRef → Any
Annotations
@native() @IntrinsicCandidate()
13. final def isInstanceOf[T0]
Definition Classes
Any
14. final def ne(arg0: AnyRef)
Definition Classes
AnyRef
15. final def notify(): Unit
Definition Classes
AnyRef
Annotations
@native() @IntrinsicCandidate()
16. final def notifyAll(): Unit
Definition Classes
AnyRef
Annotations
@native() @IntrinsicCandidate()
17. final def synchronized[T0](arg0: ⇒ T0): T0
Definition Classes
AnyRef
18. def toString(): String
Definition Classes
AnyRef → Any
19. final def wait(arg0: Long, arg1: Int): Unit
Definition Classes
AnyRef
Annotations
@throws( ... )
20. final def wait(arg0: Long): Unit
Definition Classes
AnyRef
Annotations
@throws( ... ) @native()
21. final def wait(): Unit
Definition Classes
AnyRef
Annotations
@throws( ... )

### Deprecated Value Members

1. def finalize(): Unit
Attributes
protected[lang]
Definition Classes
AnyRef
Annotations
@throws( classOf[java.lang.Throwable] ) @Deprecated
Deprecated