Transformation

trait Transformation[F[_, _, _, _, _], G[_, _, _, _, _]]

Natural transformation allowing to change the outer type that final interfaces work against.

Companion:
object
class Object
trait Matchable
class Any

Value members

Abstract methods

def apply[I, E, O, SI, SO](fa: F[I, E, O, SI, SO]): G[I, E, O, SI, SO]

Concrete methods

def andThen[H[_, _, _, _, _]](other: Transformation[G, H]): Transformation[F, H]
def precompute(allPossibleInputs: Iterable[Existential[F]]): Transformation[F, G]

Pre-computes the transormation by applying it on an iterable of all possible inputs.

Pre-computes the transormation by applying it on an iterable of all possible inputs.

Unsafe because calling the resulting transformation with an value that wasn't precomputed will result in an exception.

See https://stackoverflow.com/questions/67750145/how-to-implement-types-like-mapk-in-scala-3-dotty

def zip[G2[_, _, _, _, _]](other: Transformation[F, G2]): Transformation[F, [_, _, _, _, _] =>> Zip[G, G2, _$16, _$17, _$18, _$19, _$20]]