Abstract Value Members
-
abstract
def
getClass(): Class[_]
-
abstract
def
map[F[_], G[_]](t: T[F])(f: (F[T[F]]) ⇒ G[T[G]])(implicit arg0: Functor[F], arg1: Functor[G]): T[G]
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: Any): Boolean
-
final
def
asInstanceOf[T0]: T0
-
-
def
hashCode(): Int
-
final
def
isInstanceOf[T0]: Boolean
-
def
toString(): String
-
def
topDownCata[F[_], A](t: T[F], a: A)(f: (A, T[F]) ⇒ (A, T[F]))(implicit arg0: Functor[F]): T[F]
-
def
transAna[F[_], G[_]](t: T[F])(f: (F[T[F]]) ⇒ G[T[F]])(implicit arg0: Functor[F], arg1: Functor[G]): T[G]
-
def
transAnaT[F[_]](t: T[F])(f: (T[F]) ⇒ T[F])(implicit arg0: Functor[F]): T[F]
-
def
transApo[F[_], G[_]](t: T[F])(f: (F[T[F]]) ⇒ G[\/[T[G], T[F]]])(implicit arg0: Functor[F], arg1: Functor[G]): T[G]
-
def
transCata[F[_], G[_]](t: T[F])(f: (F[T[G]]) ⇒ G[T[G]])(implicit arg0: Functor[F], arg1: Functor[G]): T[G]
-
def
transCataT[F[_]](t: T[F])(f: (T[F]) ⇒ T[F])(implicit arg0: Functor[F]): T[F]
-
def
transPara[F[_], G[_]](t: T[F])(f: (F[(T[F], T[G])]) ⇒ G[T[G]])(implicit arg0: Functor[F], arg1: Functor[G]): T[G]
-
def
transPostpro[F[_], G[_]](t: T[F])(f: (F[T[F]]) ⇒ G[T[F]])(g: ~>[G, G])(implicit arg0: Functor[F], arg1: Functor[G]): T[G]
-
def
transPrepro[F[_], G[_]](t: T[F])(f: (F[T[G]]) ⇒ G[T[G]])(g: ~>[F, F])(implicit arg0: Functor[F], arg1: Functor[G]): T[G]
-
def
translate[F[_], G[_]](t: T[F])(f: ~>[F, G])(implicit arg0: Functor[F], arg1: Functor[G]): T[G]
Inherited from Serializable
The operations here are very similar to those in Recursive and Corecursive. The usual names (
cata
,ana
, etc.) are prefixed withtrans
and behave generally the same, except 1. theA
of the [un]fold is restricted toT[G]
, but 2. the [co]algebra shape is likeF[A] => G[A]
rather thanF[A] => A
.In exchange, the [un]folds are available to more types (EG, folds available to
Free
and unfolds available toCofree
).There are two additional operations –
transCataT
andtransAnaT
. The distinction between these andtransCata
/transAna
is that this allows the algebra to return the context (the outerT
) to be used, whereastransCata
always uses the original context of the argument tof
.This is noticable when
T
isCofree
. In this function, the result may have anyhead
the algebra desires, whereas intransCata
, it can only have thehead
of the argument tof
.Docs for operations, since they seem to break scaladoc if put in the right place:
*
map
– very roughly like Uniplate’sdescend
*transCataT
– akin to Uniplate’stransform
*transAnaT
– akin to Uniplate’stopDownTransform
*transCata
– akin to Fixplate’srestructure