matryoshka

# Birecursive

### Related Docs: object Birecursive | package matryoshka

#### trait Birecursive[T] extends Recursive[T] with Corecursive[T]

A type that is both Recursive and Corecursive.

Linear Supertypes
Corecursive[T], Recursive[T], Based[T], Serializable, Serializable, AnyRef, Any
Ordering
1. Alphabetic
2. By Inheritance
Inherited
1. Birecursive
2. Corecursive
3. Recursive
4. Based
5. Serializable
6. Serializable
7. AnyRef
8. Any
1. Hide All
2. Show All
Visibility
1. Public
2. All

### Type Members

1. #### abstract type Base[A]

Definition Classes
Based
2. #### type BaseT[A] = Base[A]

Definition Classes
Recursive

### Abstract Value Members

1. #### abstract def embed(t: Base[T])(implicit BF: Functor[Base]): T

Definition Classes
Corecursive
2. #### abstract def project(t: T)(implicit BF: Functor[Base]): BaseT[T]

Definition Classes
Recursive

### Concrete Value Members

1. #### final def !=(arg0: Any): Boolean

Definition Classes
AnyRef → Any
2. #### final def ##(): Int

Definition Classes
AnyRef → Any
3. #### final def ==(arg0: Any): Boolean

Definition Classes
AnyRef → Any
4. #### def all(t: T)(p: (T) ⇒ slamdata.Predef.Boolean)(implicit BF: Functor[Base], B: Foldable[Base]): slamdata.Predef.Boolean

Definition Classes
Recursive
5. #### def ana[A](a: A)(f: Coalgebra[Base, A])(implicit BF: Functor[Base]): T

Definition Classes
Corecursive
6. #### def anaM[M[_], A](a: A)(f: CoalgebraM[M, Base, A])(implicit arg0: Monad[M], BT: Traverse[Base]): M[T]

Definition Classes
Corecursive
7. #### def any(t: T)(p: (T) ⇒ slamdata.Predef.Boolean)(implicit BF: Functor[Base], B: Foldable[Base]): slamdata.Predef.Boolean

Definition Classes
Recursive
8. #### def apo[A](a: A)(f: GCoalgebra[[β\$8\$]\/[T, β\$8\$], Base, A])(implicit BF: Functor[Base]): T

An unfold that can short-circuit certain sections.

An unfold that can short-circuit certain sections.

Definition Classes
BirecursiveCorecursive
9. #### def apoM[M[_], A](a: A)(f: GCoalgebraM[[β\$5\$]\/[T, β\$5\$], M, Base, A])(implicit arg0: Monad[M], BT: Traverse[Base]): M[T]

Definition Classes
Corecursive
10. #### final def asInstanceOf[T0]: T0

Definition Classes
Any
11. #### def attributeTopDown[U, A](t: T, z: A)(f: (A, Base[T]) ⇒ A)(implicit U: Aux[U, [γ\$33\$]EnvT[A, Base, γ\$33\$]], BF: Functor[Base]): U

Attribute a tree via an algebra starting from the root.

Attribute a tree via an algebra starting from the root.

Definition Classes
Recursive
12. #### def attributeTopDownM[M[_], U, A](t: T, z: A)(f: (A, Base[T]) ⇒ M[A])(implicit arg0: Monad[M], U: Aux[U, [γ\$34\$]EnvT[A, Base, γ\$34\$]], BT: Traverse[Base]): M[U]

Kleisli variant of attributeTopDown

Kleisli variant of attributeTopDown

Definition Classes
Recursive
13. #### def cata[A](t: T)(f: Algebra[Base, A])(implicit BF: Functor[Base]): A

Definition Classes
Recursive
14. #### def cataM[M[_], A](t: T)(f: AlgebraM[M, Base, A])(implicit arg0: Monad[M], BT: Traverse[Base]): M[A]

A Kleisli catamorphism.

A Kleisli catamorphism.

Definition Classes
Recursive
15. #### def children[U](t: T)(implicit U: Aux[U, [β\$32\$]ListF[T, β\$32\$]], BF: Functor[Base], B: Foldable[Base]): U

Definition Classes
Recursive
16. #### def clone(): AnyRef

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws( ... )
17. #### def colambek(ft: Base[T])(implicit BF: Functor[Base]): T

Roughly a default impl of `embed`, given a matryoshka.Recursive instance and an overridden `ana`.

18. #### def collect[U, B](t: T)(pf: slamdata.Predef.PartialFunction[T, B])(implicit arg0: Monoid[U], U: Aux[U, [β\$35\$]ListF[B, β\$35\$]], BF: Functor[Base], B: Foldable[Base]): U

Definition Classes
Recursive
19. #### def contains(t: T, c: T)(implicit T: Equal[T], BF: Functor[Base], B: Foldable[Base]): slamdata.Predef.Boolean

Definition Classes
Recursive
20. #### def convertTo[R](t: T)(implicit R: Aux[R, Base], BF: Functor[Base]): R

Definition Classes
Recursive
21. #### implicit val corec: Aux[T, Base]

Definition Classes
Corecursive
22. #### def elgotAna[N[_], A](a: A)(k: DistributiveLaw[N, Base], ψ: ElgotCoalgebra[N, Base, A])(implicit arg0: Monad[N], BF: Functor[Base]): T

Definition Classes
Corecursive
23. #### def elgotApo[A](a: A)(f: ElgotCoalgebra[[β\$10\$]\/[T, β\$10\$], Base, A])(implicit BF: Functor[Base]): T

Definition Classes
BirecursiveCorecursive
24. #### def elgotCata[W[_], A](t: T)(k: DistributiveLaw[Base, W], g: ElgotAlgebra[W, Base, A])(implicit arg0: Comonad[W], BF: Functor[Base]): A

A catamorphism generalized with a comonad outside the functor.

A catamorphism generalized with a comonad outside the functor.

Definition Classes
Recursive
25. #### def elgotCataM[W[_], M[_], A](t: T)(k: DistributiveLaw[Base, [A]M[W[A]]], g: ElgotAlgebraM[W, M, Base, A])(implicit arg0: Comonad[W], arg1: Traverse[W], arg2: Monad[M], BT: Traverse[Base]): M[A]

Definition Classes
Recursive
26. #### def elgotFutu[A](a: A)(f: ElgotCoalgebra[[β\$9\$]Free[Base, β\$9\$], Base, A])(implicit BF: Functor[Base]): T

Definition Classes
Corecursive
27. #### def elgotHisto[A](t: T)(f: ElgotAlgebra[[β\$22\$]Cofree[Base, β\$22\$], Base, A])(implicit BF: Functor[Base]): A

Definition Classes
Recursive
28. #### def elgotPara[A](t: T)(f: ElgotAlgebra[[β\$3\$](T, β\$3\$), Base, A])(implicit BF: Functor[Base]): A

Definition Classes
BirecursiveRecursive
29. #### def elgotZygo[A, B](t: T)(f: Algebra[Base, B], g: ElgotAlgebra[[β\$10\$](B, β\$10\$), Base, A])(implicit BF: Functor[Base]): A

Definition Classes
Recursive
30. #### def elgotZygoM[A, B, M[_]](t: T)(f: AlgebraM[M, Base, B], g: ElgotAlgebraM[[β\$12\$](B, β\$12\$), M, Base, A])(implicit arg0: Monad[M], BT: Traverse[Base]): M[A]

Definition Classes
Recursive
31. #### final def eq(arg0: AnyRef): Boolean

Definition Classes
AnyRef
32. #### def equals(arg0: Any): Boolean

Definition Classes
AnyRef → Any
33. #### def finalize(): Unit

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws( classOf[java.lang.Throwable] )
34. #### def foldMap[Z](t: T)(f: (T) ⇒ Z)(implicit arg0: Monoid[Z], BF: Functor[Base], B: Foldable[Base]): Z

Definition Classes
Recursive
35. #### def foldMapM[M[_], Z](t: T)(f: (T) ⇒ M[Z])(implicit arg0: Monad[M], arg1: Monoid[Z], BF: Functor[Base], B: Foldable[Base]): M[Z]

Definition Classes
Recursive
36. #### def futu[A](a: A)(f: GCoalgebra[[β\$7\$]Free[Base, β\$7\$], Base, A])(implicit BF: Functor[Base]): T

Definition Classes
Corecursive
37. #### def futuM[M[_], A](a: A)(f: GCoalgebraM[[β\$11\$]Free[Base, β\$11\$], M, Base, A])(implicit arg0: Monad[M], BT: Traverse[Base]): M[T]

Definition Classes
Corecursive
38. #### def gElgotZygo[W[_], A, B](t: T)(f: Algebra[Base, B], w: DistributiveLaw[Base, W], g: ElgotAlgebra[[γ\$16\$]EnvT[B, W, γ\$16\$], Base, A])(implicit arg0: Comonad[W], BF: Functor[Base]): A

Definition Classes
Recursive
39. #### def gana[N[_], A](a: A)(k: DistributiveLaw[N, Base], f: GCoalgebra[N, Base, A])(implicit arg0: Monad[N], BF: Functor[Base]): T

Definition Classes
Corecursive
40. #### def ganaM[N[_], M[_], A](a: A)(k: DistributiveLaw[N, Base], f: GCoalgebraM[N, M, Base, A])(implicit arg0: Monad[N], arg1: Traverse[N], arg2: Monad[M], BT: Traverse[Base]): M[T]

Definition Classes
Corecursive
41. #### def gapo[A, B](a: A)(ψ0: Coalgebra[Base, B], ψ: GCoalgebra[[β\$3\$]\/[B, β\$3\$], Base, A])(implicit BF: Functor[Base]): T

An unfold that can handle sections with a secondary unfold.

An unfold that can handle sections with a secondary unfold.

Definition Classes
Corecursive
42. #### def gcata[W[_], A](t: T)(k: DistributiveLaw[Base, W], g: GAlgebra[W, Base, A])(implicit arg0: Comonad[W], BF: Functor[Base]): A

A catamorphism generalized with a comonad inside the functor.

A catamorphism generalized with a comonad inside the functor.

Definition Classes
Recursive
43. #### def gcataM[W[_], M[_], A](t: T)(w: DistributiveLaw[Base, W], g: GAlgebraM[W, M, Base, A])(implicit arg0: Comonad[W], arg1: Traverse[W], arg2: Monad[M], BT: Traverse[Base]): M[A]

Definition Classes
Recursive
44. #### def gcataZygo[W[_], A, B](t: T)(k: DistributiveLaw[Base, W], f: GAlgebra[W, Base, B], g: GAlgebra[[β\$26\$](B, β\$26\$), Base, A])(implicit arg0: Comonad[W], BF: Functor[Base], BU: Unzip[Base]): A

Definition Classes
Recursive
45. #### final def getClass(): Class[_]

Definition Classes
AnyRef → Any
46. #### def ghisto[H[_], A](t: T)(g: DistributiveLaw[Base, H], f: GAlgebra[[β\$24\$]Cofree[H, β\$24\$], Base, A])(implicit arg0: Functor[H], BF: Functor[Base]): A

Definition Classes
Recursive

50. #### def gzygo[W[_], A, B](t: T)(f: Algebra[Base, B], w: DistributiveLaw[Base, W], g: GAlgebra[[γ\$14\$]EnvT[B, W, γ\$14\$], Base, A])(implicit arg0: Comonad[W], BF: Functor[Base]): A

Definition Classes
Recursive
51. #### def hashCode(): Int

Definition Classes
AnyRef → Any
52. #### def histo[A](t: T)(f: GAlgebra[[β\$20\$]Cofree[Base, β\$20\$], Base, A])(implicit BF: Functor[Base]): A

Definition Classes
Recursive
53. #### final def isInstanceOf[T0]: Boolean

Definition Classes
Any
54. #### def isLeaf(t: T)(implicit BF: Functor[Base], B: Foldable[Base]): slamdata.Predef.Boolean

Definition Classes
Recursive
55. #### def lambek(tf: T)(implicit BF: Functor[Base]): Base[T]

Roughly a default impl of `project`, given a matryoshka.Corecursive instance and an overridden `cata`.

56. #### def mutu[A, B](t: T)(f: GAlgebra[[β\$18\$](A, β\$18\$), Base, B], g: GAlgebra[[β\$19\$](B, β\$19\$), Base, A])(implicit BF: Functor[Base]): A

Mutually-recursive fold.

Mutually-recursive fold.

Definition Classes
Recursive
Annotations
@SuppressWarnings()
57. #### final def ne(arg0: AnyRef): Boolean

Definition Classes
AnyRef
58. #### final def notify(): Unit

Definition Classes
AnyRef
59. #### final def notifyAll(): Unit

Definition Classes
AnyRef
60. #### def para[A](t: T)(f: GAlgebra[[β\$1\$](T, β\$1\$), Base, A])(implicit BF: Functor[Base]): A

Definition Classes
BirecursiveRecursive
61. #### def paraM[M[_], A](t: T)(f: GAlgebraM[[β\$3\$](T, β\$3\$), M, Base, A])(implicit arg0: Monad[M], BT: Traverse[Base]): M[A]

Definition Classes
Recursive
62. #### def paraMerga[A](t: T, that: T)(f: (T, T, slamdata.Predef.Option[Base[A]]) ⇒ A)(implicit BF: Functor[Base], BM: Merge[Base]): A

Combines two functors that may fail to merge, also providing access to the inputs at each level.

Combines two functors that may fail to merge, also providing access to the inputs at each level. This is akin to an Elgot, not generalized, fold.

Definition Classes
Recursive
63. #### def paraZygo[A, B](t: T)(f: GAlgebra[[β\$5\$](T, β\$5\$), Base, B], g: GAlgebra[[β\$6\$](B, β\$6\$), Base, A])(implicit BF: Functor[Base], BU: Unzip[Base]): A

Definition Classes
BirecursiveRecursive

66. #### implicit val rec: Aux[T, Base]

Definition Classes
Recursive
67. #### final def synchronized[T0](arg0: ⇒ T0): T0

Definition Classes
AnyRef
68. #### def toString(): String

Definition Classes
AnyRef → Any

71. #### def transAna[U, G[_]](u: U)(f: (G[U]) ⇒ Base[U])(implicit arg0: Functor[G], U: Aux[U, G], BF: Functor[Base]): T

Definition Classes
Corecursive
72. #### def transAnaM[M[_], U, G[_]](u: U)(f: TransformM[M, U, G, Base])(implicit arg0: Monad[M], arg1: Functor[G], U: Aux[U, G], BT: Traverse[Base]): M[T]

Definition Classes
Corecursive

75. #### def transApo[U, G[_]](u: U)(f: CoalgebraicGTransform[[β\$15\$]\/[T, β\$15\$], U, G, Base])(implicit arg0: Functor[G], U: Aux[U, G], BF: Functor[Base]): T

Definition Classes
BirecursiveCorecursive
76. #### def transApoT(t: T)(f: (T) ⇒ \/[T, T])(implicit BF: Functor[Base]): T

This behaves like matryoshka.Corecursive.elgotApo```, but it’s harder to see from the types that in the disjunction, ```-\/``` is the final result for this node, while ```\/-``` means to keep processing the children. ```

77. #### def transCata[U, G[_]](t: T)(f: (Base[U]) ⇒ G[U])(implicit arg0: Functor[G], U: Aux[U, G], BF: Functor[Base]): U

Definition Classes
Recursive
78. #### def transCataM[M[_], U, G[_]](t: T)(f: TransformM[M, U, Base, G])(implicit arg0: Monad[M], arg1: Functor[G], U: Aux[U, G], BT: Traverse[Base]): M[U]

Definition Classes
Recursive

81. #### def transFutu[U, G[_]](u: U)(f: CoalgebraicGTransform[[β\$15\$]Free[Base, β\$15\$], U, G, Base])(implicit arg0: Functor[G], U: Aux[U, G], BF: Functor[Base]): T

Definition Classes
Corecursive
82. #### def transGana[M[_], U, G[_]](u: U)(k: DistributiveLaw[M, Base], f: CoalgebraicGTransform[M, U, G, Base])(implicit arg0: Monad[M], arg1: Functor[G], U: Aux[U, G], BF: Functor[Base]): T

Definition Classes
Corecursive
83. #### def transGcata[W[_], U, G[_]](t: T)(k: DistributiveLaw[Base, W], f: AlgebraicGTransform[W, U, Base, G])(implicit arg0: Comonad[W], arg1: Functor[G], U: Aux[U, G], BF: Functor[Base]): U

Definition Classes
Recursive
84. #### def transPara[U, G[_]](t: T)(f: AlgebraicGTransform[[β\$14\$](T, β\$14\$), U, Base, G])(implicit arg0: Functor[G], U: Aux[U, G], BF: Functor[Base]): U

Definition Classes
BirecursiveRecursive
85. #### def transParaT(t: T)(f: ((T, T)) ⇒ T)(implicit BF: Functor[Base]): T

This behaves like matryoshka.Recursive.elgotPara```, but it’s harder to see from the types that in the tuple, ```_2` is the result so far and `_1``` is the original structure. ```

86. #### def transPostpro[U, G[_]](t: T)(e: ~>[G, G], f: Transform[T, Base, G])(implicit arg0: Functor[G], U: Aux[U, G], BF: Functor[Base]): U

Definition Classes
Recursive

88. #### final def wait(): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )
89. #### final def wait(arg0: Long, arg1: Int): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )
90. #### final def wait(arg0: Long): Unit

Definition Classes
AnyRef
Annotations
@throws( ... )
91. #### def zygo[A, B](t: T)(f: Algebra[Base, B], g: GAlgebra[[β\$4\$](B, β\$4\$), Base, A])(implicit BF: Functor[Base]): A

Definition Classes
Recursive
92. #### def zygoM[A, B, M[_]](t: T)(f: AlgebraM[M, Base, B], g: GAlgebraM[[β\$6\$](B, β\$6\$), M, Base, A])(implicit arg0: Monad[M], BT: Traverse[Base]): M[A]

Definition Classes
Recursive