Package

matryoshka

Permalink

package matryoshka

Generalized folds, unfolds, and refolds.

Linear Supertypes
AnyRef, Any
Ordering
  1. Grouped
  2. Alphabetic
  3. By Inheritance
Inherited
  1. matryoshka
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. type Algebra[F[_], A] = (F[A]) ⇒ A

    Permalink

    Fold a structure F to a value A.

  2. type AlgebraIso[F[_], A] = PIso[F[scalaz.Scalaz.Id[A]], F[scalaz.Scalaz.Id[A]], A, A]

    Permalink
  3. type AlgebraM[M[_], F[_], A] = (F[A]) ⇒ M[A]

    Permalink

    Fold a structure F to a value A, accumulating effects in the monad M.

  4. type AlgebraPrism[F[_], A] = PPrism[F[A], F[A], A, A]

    Permalink
  5. type AlgebraicGTransform[W[_], T, F[_], G[_]] = (F[W[T]]) ⇒ G[T]

    Permalink

    Transform a structure F containing values in W, to a structure G, in bottom-up fashion.

  6. type AlgebraicGTransformM[W[_], M[_], T, F[_], G[_]] = (F[W[T]]) ⇒ M[G[T]]

    Permalink

    Transform a structure F containing values in W, to a structure G, in bottom-up fashion.

  7. trait Based[T] extends Serializable

    Permalink

    Provides a type describing the pattern functor of some {co}recursive type T.

    Provides a type describing the pattern functor of some {co}recursive type T. For standard fixed-point types like matryoshka.data.Fix, Based[Fix[F]]#Base is simply F. However, directly recursive types generally have a less obvious pattern functor. E.g., Based[Cofree[F, A]]#Base is EnvT[A, F, ?].

  8. trait Birecursive[T] extends Recursive[T] with Corecursive[T]

    Permalink

    A type that is both Recursive and Corecursive.

    A type that is both Recursive and Corecursive.

    NB: Do not define instances of this or use it as a constraint until issue #44 is resolved. Define an instance of BirecursiveT if possible, otherwise define separate Recursive and Corecursive instances.

  9. trait BirecursiveT[T[_[_]]] extends RecursiveT[T] with CorecursiveT[T]

    Permalink

    This is a workaround for a certain use case (e.g., matryoshka.patterns.Diff and matryoshka.patterns.PotentialFailure).

    This is a workaround for a certain use case (e.g., matryoshka.patterns.Diff and matryoshka.patterns.PotentialFailure). Define an instance of this rather than Recursive and Corecursive when possible.

  10. type Coalgebra[F[_], A] = (A) ⇒ F[A]

    Permalink

    Unfold a value A to a structure F.

  11. type CoalgebraM[M[_], F[_], A] = (A) ⇒ M[F[A]]

    Permalink

    Unfold a value A to a structure F, accumulating effects in the monad M.

  12. type CoalgebraPrism[F[_], A] = PPrism[A, A, F[A], F[A]]

    Permalink
  13. type CoalgebraicElgotTransform[N[_], T, F[_], G[_]] = (F[T]) ⇒ N[G[T]]

    Permalink

    Transform a structure F to a structure G, in top-down fashion, accumulating effects in the monad M.

  14. type CoalgebraicGTransform[N[_], T, F[_], G[_]] = (F[T]) ⇒ G[N[T]]

    Permalink

    Transform a structure F to a structure G, in top-down fashion, accumulating effects in the monad M.

  15. type CoalgebraicGTransformM[N[_], M[_], T, F[_], G[_]] = (F[T]) ⇒ M[G[N[T]]]

    Permalink

    Transform a structure F to a structure G containing values in N, in top-down fashion, accumulating effects in the monad M.

  16. trait Corecursive[T] extends Based[T]

    Permalink

    Unfolds for corecursive data types.

  17. trait CorecursiveT[T[_[_]]] extends AnyRef

    Permalink

    This is a workaround for a certain use case (e.g., matryoshka.patterns.Diff and matryoshka.patterns.PotentialFailure).

    This is a workaround for a certain use case (e.g., matryoshka.patterns.Diff and matryoshka.patterns.PotentialFailure). Define an instance of this rather than Corecursive when possible.

  18. trait Delay[F[_], G[_]] extends AnyRef

    Permalink

    To avoid diverging implicits with fixed-point types, we need to defer the lookup.

  19. type DistributiveLaw[F[_], G[_]] = NaturalTransformation[[A]F[G[A]], [A]G[F[A]]]

    Permalink

    A NaturalTransformation that sequences two types

  20. type ElgotAlgebra[W[_], F[_], A] = (W[F[A]]) ⇒ scalaz.Scalaz.Id[A]

    Permalink

    Fold a structure F (usually a Functor) contained in W (usually a Comonad), to a value A.

  21. type ElgotAlgebraIso[W[_], N[_], F[_], A] = PIso[W[F[A]], N[F[A]], A, A]

    Permalink
  22. type ElgotAlgebraM[W[_], M[_], F[_], A] = (W[F[A]]) ⇒ M[A]

    Permalink

    Fold a structure F (usually a Functor) contained in W (usually a Comonad), to a value A, accumulating effects in the monad M.

  23. type ElgotCoalgebra[E[_], F[_], A] = (A) ⇒ E[F[A]]

    Permalink

    Unfold a value A to a structure F (usually a Functor), contained in E.

  24. type ElgotCoalgebraM[E[_], M[_], F[_], A] = (A) ⇒ M[E[F[A]]]

    Permalink

    Unfold a value A to a structure F (usually a Functor), contained in E, accumulating effects in the monad M.

  25. type EndoTransform[T, F[_]] = (F[T]) ⇒ F[T]

    Permalink
  26. trait EqualT[T[_[_]]] extends Serializable

    Permalink
  27. type GAlgebra[W[_], F[_], A] = (F[W[A]]) ⇒ A

    Permalink

    Fold a structure F containing values in W, to a value A.

  28. type GAlgebraIso[W[_], N[_], F[_], A] = PIso[F[W[A]], F[N[A]], A, A]

    Permalink

    An algebra and its dual form an isomorphism.

  29. type GAlgebraM[W[_], M[_], F[_], A] = (F[W[A]]) ⇒ M[A]

    Permalink

    Fold a structure F containing values in W, to a value A, accumulating effects in the monad M.

  30. type GCoalgebra[N[_], F[_], A] = (A) ⇒ F[N[A]]

    Permalink

    Unfold a value A to a structure F containing values in N.

  31. type GCoalgebraM[N[_], M[_], F[_], A] = (A) ⇒ M[F[N[A]]]

    Permalink

    Unfold a value A to a structure F containing values in N, accumulating effects in the monad M.

  32. sealed abstract class Hole extends AnyRef

    Permalink
  33. trait Merge[F[_]] extends Serializable

    Permalink

    Like Zip, but it can fail to merge, so it’s much more general.

  34. trait Recursive[T] extends Based[T]

    Permalink

    Folds for recursive data types.

  35. trait RecursiveT[T[_[_]]] extends slamdata.Predef.Serializable

    Permalink

    This is a workaround for a certain use case (e.g., matryoshka.patterns.Diff and matryoshka.patterns.PotentialFailure).

    This is a workaround for a certain use case (e.g., matryoshka.patterns.Diff and matryoshka.patterns.PotentialFailure). Define an instance of this rather than Recursive when possible.

  36. trait ShowT[T[_[_]]] extends Serializable

    Permalink
  37. type Transform[T, F[_], G[_]] = (F[T]) ⇒ G[T]

    Permalink

    Transform a structure F to a structure G.

    Transform a structure F to a structure G. For a top-down transformation, T#Base must be F, and for a bottom-up transformation, T#Base must be G.

  38. type TransformM[M[_], T, F[_], G[_]] = (F[T]) ⇒ M[G[T]]

    Permalink

    Transform a structure F to a structure G, accumulating effects in the monad M.

    Transform a structure F to a structure G, accumulating effects in the monad M. For a top-down transformation, T#Base must be F, and for a bottom-up transformation, T#Base must be G.

  39. sealed abstract class [F[_], G[_]] extends AnyRef

    Permalink

Value Members

  1. object AlgebraIso extends Serializable

    Permalink
  2. object AlgebraPrism extends Serializable

    Permalink
  3. implicit def AlgebraZip[F[_]](implicit arg0: Functor[F]): Zip[[γ$35$](F[scalaz.Scalaz.Id[γ$35$]]) ⇒ γ$35$]

    Permalink

  4. object Based extends Serializable

    Permalink
  5. object Birecursive extends Serializable

    Permalink
  6. object BirecursiveT extends Serializable

    Permalink
  7. object CoalgebraPrism extends Serializable

    Permalink
  8. object Corecursive extends Serializable

    Permalink
  9. object CorecursiveT

    Permalink
  10. object Delay

    Permalink
  11. object ElgotAlgebraIso extends Serializable

    Permalink
  12. implicit def ElgotAlgebraMZip[W[_], M[_], F[_]](implicit arg0: Functor[W], arg1: Applicative[M], arg2: Functor[F]): Zip[[δ$37$](W[F[δ$37$]]) ⇒ M[δ$37$]]

    Permalink

  13. implicit def ElgotAlgebraZip[W[_], F[_]](implicit arg0: Functor[W], arg1: Functor[F]): Zip[[δ$37$](W[F[δ$37$]]) ⇒ scalaz.Scalaz.Id[δ$37$]]

    Permalink

  14. object Embed

    Permalink

    An extractor to make it easier to pattern-match on arbitrary Recursive structures.

    An extractor to make it easier to pattern-match on arbitrary Recursive structures.

    NB: This extractor is irrufutable and doesn’t break exhaustiveness checking.

  15. object EqualT extends Serializable

    Permalink
  16. object GAlgebraIso extends Serializable

    Permalink
  17. implicit def GAlgebraZip[W[_], F[_]](implicit arg0: Functor[W], arg1: Functor[F]): Zip[[γ$35$](F[W[γ$35$]]) ⇒ γ$35$]

    Permalink

  18. object Hole extends Hole with Product with Serializable

    Permalink
  19. object Merge extends Serializable

    Permalink
  20. object Recursive extends Serializable

    Permalink
  21. object RecursiveT extends Serializable

    Permalink
  22. object ShowT extends Serializable

    Permalink
  23. def alignThese[T, F[_]](implicit arg0: Align[F], T: Aux[T, F]): ElgotCoalgebra[[β$42$]\/[T, β$42$], F, \&/[T, T]]

    Permalink

    Aligns “These” into a single structure, short-circuting when we hit a “This” or “That”.

  24. def attrK[F[_], A](k: A)(implicit arg0: Functor[F]): Algebra[F, Cofree[F, A]]

    Permalink

  25. def attrSelf[T, F[_]](implicit arg0: Functor[F], T: Aux[T, F]): Algebra[F, Cofree[F, T]]

    Permalink

  26. def attributeAlgebra[F[_], A](f: Algebra[F, A])(implicit arg0: Functor[F]): Algebra[F, Cofree[F, A]]

    Permalink

  27. def attributeAlgebraM[F[_], M[_], A](f: AlgebraM[M, F, A])(implicit arg0: Functor[F], arg1: Functor[M]): AlgebraM[M, F, Cofree[F, A]]

    Permalink

    Turns any F-algebra, into an identical one that attributes the tree with the results for each node.

  28. def attributeCoalgebra[F[_], B](ψ: Coalgebra[F, B]): Coalgebra[[γ$26$]EnvT[B, F, γ$26$], B]

    Permalink

  29. object attributeElgotM

    Permalink

    A function to be called like attributeElgotM[M](myElgotAlgebraM).

  30. def bilambekIso[T, F[_]](implicit arg0: Functor[F], TR: Aux[T, F], TC: Aux[T, F]): AlgebraIso[F, T]

    Permalink
  31. def binarySequence[A](relation: (A, A) ⇒ A): Coalgebra[[β$43$](A, β$43$), (A, A)]

    Permalink

    Generates an infinite sequence from two seed values.

  32. def birecursiveIso[T, F[_]](implicit arg0: Functor[F], TR: Aux[T, F], TC: Aux[T, F]): AlgebraIso[F, T]

    Permalink
  33. implicit def birecursiveTBirecursive[T[_[_]], F[_]](implicit arg0: BirecursiveT[T]): Aux[T[F], F]

    Permalink
  34. implicit def birecursiveTFunctor[T[_[_]], F[_, _]](implicit arg0: BirecursiveT[T], F: Bifunctor[F]): Functor[[α]T[[β$44$]F[α, β$44$]]]

    Permalink
  35. def builder[F[_], A, B](fa: F[A], children: slamdata.Predef.List[B])(implicit arg0: Traverse[F]): F[B]

    Permalink
  36. def chrono[F[_], A, B](a: A)(g: GAlgebra[[β$5$]Cofree[F, β$5$], F, B], f: GCoalgebra[[β$6$]Free[F, β$6$], F, A])(implicit arg0: Functor[F]): B

    Permalink

    Similar to a hylomorphism, this composes a futumorphism and a histomorphism.

  37. def codyna[F[_], A, B](a: A)(φ: Algebra[F, B], ψ: GCoalgebra[[β$1$]Free[F, β$1$], F, A])(implicit arg0: Functor[F]): B

    Permalink

    cata ⋘ futu

  38. def codynaM[M[_], F[_], A, B](a: A)(φ: AlgebraM[M, F, B], ψ: GCoalgebraM[[β$3$]Free[F, β$3$], M, F, A])(implicit arg0: Monad[M], arg1: Traverse[F]): M[B]

    Permalink

    cataM ⋘ futuM

  39. def coelgot[F[_], A, B](a: A)(φ: ElgotAlgebra[[β$11$](A, β$11$), F, B], ψ: Coalgebra[F, A])(implicit arg0: Functor[F]): B

    Permalink

    elgotZygo ⋘ ana

  40. object coelgotM

    Permalink

    elgotZygoM ⋘ anaM

  41. implicit def corecursiveTCorecursive[T[_[_]], F[_]](implicit arg0: CorecursiveT[T]): Aux[T[F], F]

    Permalink
  42. def count[T, F[_]](form: T)(implicit arg0: Equal[T], arg1: Functor[F], arg2: Foldable[F], T: Aux[T, F]): ElgotAlgebra[[β$41$](T, β$41$), F, slamdata.Predef.Int]

    Permalink

    Count the instances of form in the structure.

  43. package data

    Permalink

    This packages contains fixed-point operators as well as instances of recursion schemes for various extant data types.

    This packages contains fixed-point operators as well as instances of recursion schemes for various extant data types.

    The reason these are relegated to their own package is because, in general, you should eschew using them directly, but rather rely on the type class constraints, and only require specific types at the boundaries.

  44. def deattribute[F[_], A, B](φ: Algebra[F, B]): Algebra[[γ$27$]EnvT[A, F, γ$27$], B]

    Permalink

    Useful for ignoring the annotation when folding a cofree.

  45. implicit def delayEqual[F[_], A](implicit A: Equal[A], F: Delay[Equal, F]): Equal[F[A]]

    Permalink

    This implicit allows Delay implicits to be found when searching for a traditionally-defined instance.

  46. implicit def delayShow[F[_], A](implicit A: Show[A], F: Delay[Show, F]): Show[F[A]]

    Permalink

    See delayEqual.

  47. def distAna[F[_]]: DistributiveLaw[scalaz.Scalaz.Id, F]

    Permalink

  48. def distApo[T, F[_]](implicit arg0: Functor[F], T: Aux[T, F]): DistributiveLaw[[β$20$]\/[T, β$20$], F]

    Permalink

  49. def distApplicative[F[_], G[_]](implicit arg0: Traverse[F], arg1: Applicative[G]): DistributiveLaw[F, G]

    Permalink

    A general DistributiveLaw for the case where the scalaz.Comonad is also scalaz.Applicative.

  50. def distCata[F[_]]: DistributiveLaw[F, scalaz.Scalaz.Id]

    Permalink

  51. def distDistributive[F[_], G[_]](implicit arg0: Functor[F], arg1: Distributive[G]): DistributiveLaw[F, G]

    Permalink

    A general DistributiveLaw for the case where the scalaz.Comonad is also scalaz.Distributive.

  52. def distFutu[F[_]](implicit arg0: Functor[F]): DistributiveLaw[[β$23$]Free[F, β$23$], F]

    Permalink

  53. def distGApo[F[_], B](g: Coalgebra[F, B])(implicit arg0: Functor[F]): DistributiveLaw[[β$21$]\/[B, β$21$], F]

    Permalink

  54. def distGApoT[F[_], M[_], B](g: Coalgebra[F, B], k: DistributiveLaw[M, F])(implicit arg0: Functor[F], arg1: Functor[M]): DistributiveLaw[[γ$22$]EitherT[M, B, γ$22$], F]

    Permalink

    Allows for more complex unfolds, like futuGApo(φ0: Coalgebra[F, B], φ: GCoalgebra[λ[α => EitherT[Free[F, ?], B, α]], F, A])

  55. def distGFutu[H[_], F[_]](k: DistributiveLaw[H, F])(implicit arg0: Functor[H], F: Functor[F]): DistributiveLaw[[β$24$]Free[H, β$24$], F]

    Permalink

  56. def distGHisto[F[_], H[_]](k: DistributiveLaw[F, H])(implicit arg0: Functor[F], arg1: Functor[H]): DistributiveLaw[F, [β$19$]Cofree[H, β$19$]]

    Permalink

  57. def distHisto[F[_]](implicit arg0: Functor[F]): DistributiveLaw[F, [β$18$]Cofree[F, β$18$]]

    Permalink

  58. def distPara[T, F[_]](implicit arg0: Functor[F], T: Aux[T, F]): DistributiveLaw[F, [β$13$](T, β$13$)]

    Permalink

  59. def distParaT[T, W[_], F[_]](t: DistributiveLaw[F, W])(implicit arg0: Comonad[W], arg1: Functor[F], T: Aux[T, F]): DistributiveLaw[F, [γ$14$]EnvT[T, W, γ$14$]]

    Permalink

  60. def distZygo[F[_], B](g: Algebra[F, B])(implicit arg0: Functor[F]): DistributiveLaw[F, [β$15$](B, β$15$)]

    Permalink

  61. def distZygoM[F[_], M[_], B](g: AlgebraM[M, F, B], k: DistributiveLaw[F, M])(implicit arg0: Functor[F], arg1: Monad[M]): DistributiveLaw[F, [A]M[(B, A)]]

    Permalink

  62. def distZygoT[F[_], W[_], B](g: Algebra[F, B], k: DistributiveLaw[F, W])(implicit arg0: Functor[F], arg1: Comonad[W]): DistributiveLaw[F, [γ$17$]EnvT[B, W, γ$17$]]

    Permalink

  63. def dyna[F[_], A, B](a: A)(φ: (F[Cofree[F, B]]) ⇒ B, ψ: Coalgebra[F, A])(implicit arg0: Functor[F]): B

    Permalink

    histo ⋘ ana

  64. def elgot[F[_], A, B](a: A)(φ: Algebra[F, B], ψ: ElgotCoalgebra[[β$9$]\/[B, β$9$], F, A])(implicit arg0: Functor[F]): B

    Permalink

    cata ⋘ elgotGApo

  65. def elgotM[M[_], F[_], A, B](a: A)(φ: AlgebraM[M, F, B], ψ: ElgotCoalgebraM[[β$10$]\/[B, β$10$], M, F, A])(implicit arg0: Monad[M], arg1: Traverse[F]): M[B]

    Permalink

    cataM ⋘ elgotGApoM

  66. implicit def equalTEqual[T[_[_]], F[_]](implicit arg0: Functor[F], T: EqualT[T], F: Delay[Equal, F]): Equal[T[F]]

    Permalink
  67. def find[T](f: (T) ⇒ slamdata.Predef.Boolean): (T) ⇒ \/[T, T]

    Permalink

    Returns (on the left) the first element that passes f.

  68. def foldIso[T, F[_], A](alg: AlgebraIso[F, A])(implicit arg0: Functor[F], TR: Aux[T, F], TC: Aux[T, F]): Iso[T, A]

    Permalink

    There is a fold/unfold isomorphism for any AlgebraIso.

  69. def foldPrism[T, F[_], A](alg: AlgebraPrism[F, A])(implicit arg0: Traverse[F], TR: Aux[T, F], TC: Aux[T, F]): Prism[T, A]

    Permalink

    There is a fold prism for any AlgebraPrism.

  70. def forgetAnnotation[T, R, F[_], A](t: T)(implicit arg0: Functor[F], T: Aux[T, [γ$28$]EnvT[A, F, γ$28$]], R: Aux[R, F]): R

    Permalink
  71. def ghylo[W[_], N[_], F[_], A, B](a: A)(w: DistributiveLaw[F, W], n: DistributiveLaw[N, F], f: GAlgebra[W, F, B], g: GCoalgebra[N, F, A])(implicit arg0: Comonad[W], arg1: Monad[N], arg2: Functor[F]): B

    Permalink

    A generalized version of a hylomorphism that composes any coalgebra and algebra.

    A generalized version of a hylomorphism that composes any coalgebra and algebra. (gcata ⋘ gana)

  72. def ghyloM[W[_], N[_], M[_], F[_], A, B](a: A)(w: DistributiveLaw[F, W], m: DistributiveLaw[N, F], f: GAlgebraM[W, M, F, B], g: GCoalgebraM[N, M, F, A])(implicit arg0: Comonad[W], arg1: Traverse[W], arg2: Monad[N], arg3: Traverse[N], arg4: Monad[M], arg5: Traverse[F]): M[B]

    Permalink

    A Kleisli ghylo (gcataM ⋘ ganaM)

  73. def height[F[_]](implicit arg0: Foldable[F]): Algebra[F, slamdata.Predef.Int]

    Permalink

    The largest number of hops from a node to a leaf.

  74. def holes[F[_], A](fa: F[A])(implicit arg0: Traverse[F]): F[(A, Coalgebra[F, A])]

    Permalink
  75. def holesList[F[_], A](fa: F[A])(implicit arg0: Traverse[F]): slamdata.Predef.List[(A, Coalgebra[F, A])]

    Permalink
  76. def hylo[F[_], A, B](a: A)(f: Algebra[F, B], g: Coalgebra[F, A])(implicit arg0: Functor[F]): B

    Permalink

    Composition of an anamorphism and a catamorphism that avoids building the intermediate recursive data structure.

  77. def hyloM[M[_], F[_], A, B](a: A)(f: AlgebraM[M, F, B], g: CoalgebraM[M, F, A])(implicit arg0: Monad[M], arg1: Traverse[F]): M[B]

    Permalink

    A Kleisli hylomorphism.

  78. package implicits

    Permalink
  79. package instances

    Permalink
  80. def join[A]: Algebra[[α]Option[(A, (α, α))], slamdata.Predef.List[A]]

    Permalink
  81. def liftT[F[_], A, B](φ: ElgotAlgebra[[β$29$](A, β$29$), F, B]): Algebra[[γ$30$]EnvT[A, F, γ$30$], B]

    Permalink

    Makes it possible to use ElgotAlgebras on EnvT.

  82. def liftTM[M[_], F[_], A, B](φ: ElgotAlgebraM[[β$31$](A, β$31$), M, F, B]): AlgebraM[M, [γ$32$]EnvT[A, F, γ$32$], B]

    Permalink

    Makes it possible to use ElgotAlgebras on EnvT.

  83. def mergeTuple[T, F[_]](implicit arg0: Functor[F], arg1: Merge[F], T: Aux[T, F]): CoalgebraM[slamdata.Predef.Option, F, (T, T)]

    Permalink

    Merges a tuple of functors, if possible.

  84. def orDefault[A, B](default: B)(f: (A) ⇒ slamdata.Predef.Option[B]): (A) ⇒ B

    Permalink

    Converts a failable fold into a non-failable, by returning the default upon failure.

  85. def orOriginal[A](f: (A) ⇒ slamdata.Predef.Option[A]): (A) ⇒ A

    Permalink

    Converts a failable fold into a non-failable, by simply returning the argument upon failure.

  86. def partition[A](implicit arg0: Order[A]): Coalgebra[[α]Option[(A, (α, α))], slamdata.Predef.List[A]]

    Permalink
  87. package patterns

    Permalink
  88. def project[F[_], A](index: slamdata.Predef.Int, fa: F[A])(implicit arg0: Foldable[F]): slamdata.Predef.Option[A]

    Permalink
  89. def quicksort[A](as: slamdata.Predef.List[A])(implicit arg0: Order[A]): slamdata.Predef.List[A]

    Permalink
  90. implicit def recursiveTFoldable[T[_[_]], F[_, _]](implicit arg0: RecursiveT[T], FB: Bifoldable[F], FF: Bifunctor[F]): Foldable[[α]T[[β$49$]F[α, β$49$]]]

    Permalink
  91. implicit def recursiveTRecursive[T[_[_]], F[_]](implicit arg0: RecursiveT[T]): Aux[T[F], F]

    Permalink
  92. final def repeatedly[A](f: (A) ⇒ slamdata.Predef.Option[A])(expr: A): A

    Permalink

    Repeatedly applies the function to the result as long as it returns Some.

    Repeatedly applies the function to the result as long as it returns Some. Finally returns the last non-None value (which may be the initial input).

    Annotations
    @tailrec()
  93. def runT[F[_], A, B](ψ: ElgotCoalgebra[[β$33$]\/[A, β$33$], F, B]): Coalgebra[[γ$34$]CoEnv[A, F, γ$34$], B]

    Permalink
  94. implicit def showTShow[T[_[_]], F[_]](implicit arg0: Functor[F], T: ShowT[T], F: Delay[Show, F]): Show[T[F]]

    Permalink
  95. def size[F[_]](implicit arg0: Foldable[F]): Algebra[F, slamdata.Predef.Int]

    Permalink

    The number of nodes in this structure.

  96. def substitute[T](original: T, replacement: T)(implicit arg0: Equal[T]): (T) ⇒ \/[T, T]

    Permalink

    Replaces all instances of original in the structure with replacement.

  97. def toTree[F[_]](implicit arg0: Functor[F], arg1: Foldable[F]): Algebra[F, Tree[F[slamdata.Predef.Unit]]]

    Permalink

    Converts a fixed-point structure into a generic Tree.

    Converts a fixed-point structure into a generic Tree. One use of this is using .cata(toTree).drawTree rather than .show to get a pretty-printed tree.

  98. def unfoldPrism[T, F[_], A](coalg: CoalgebraPrism[F, A])(implicit arg0: Traverse[F], TR: Aux[T, F], TC: Aux[T, F]): Prism[A, T]

    Permalink

    There is an unfold prism for any CoalgebraPrism.

  99. def zipTuple[T, F[_]](implicit arg0: Functor[F], arg1: Zip[F], T: Aux[T, F]): Coalgebra[F, (T, T)]

    Permalink

    Combines a tuple of zippable functors.

Inherited from AnyRef

Inherited from Any

Algebras & Coalgebras

Generic algebras that operate over most functors.

Algebra Transformations

Operations that modify algebras in various ways to make them easier to combine with others.

Distributive Laws

Natural transformations required for generalized folds and unfolds.

Refolds

Traversals that apply an unfold and a fold in a single pass.

Ungrouped