Bimap

libretto.lambda.Shuffle.~⚬.Bimap
case class Bimap[X1, X2, Y1, Y2](par: Par[X1, X2, Y1, Y2]) extends Composed[X1 |*| X2, Y1 |*| Y2]

Two parallel operations, at least one of which is not Id.

Attributes

Graph
Supertypes
trait Serializable
trait Product
trait Equals
trait Composed[X1 |*| X2, Y1 |*| Y2]
trait (X1 |*| X2) ~⚬ (Y1 |*| Y2)
class Object
trait Matchable
class Any
Show all

Members list

Value members

Concrete methods

override def apply[F[_]](a: F[X1 |*| X2])(using StrongZippable[|*|, F]): F[Y1 |*| Y2]

Attributes

Definition Classes
override def chaseBw[G[_], T](i: Focus[|*|, G])(using ev: (Y1 |*| Y2) =:= G[T]): ChaseBwRes[X1 |*| X2, G, T]

Attributes

Definition Classes
override def chaseFw[F[_], T](i: Focus[|*|, F])(using ev: (X1 |*| X2) =:= F[T]): ChaseFwRes[F, T, Y1 |*| Y2]

Attributes

Definition Classes
override def preShuffle[F[_, _], C](f: F[Y1 |*| Y2, C])(using F: PairwiseRel[|*|, |*|, F]): Exists[[P] =>> (F[X1 |*| X2, P], P ~⚬ C)]

Attributes

Definition Classes
override def projectProper[C](p: Proper[|*|, Y1 |*| Y2, C]): ProjectProperRes[X1 |*| X2, C]

Attributes

Definition Classes
override def proveId(inputIsAtomic: [x, y] => ((X1 |*| X2) =:= (x |*| y)) => Nothing): (X1 |*| X2) =:= (Y1 |*| Y2)

Attributes

Definition Classes
override def translate[<*>[_, _], F[_, _], S](fa: F[X1 |*| X2, S])(m: SemigroupalObjectMap[|*|, <*>, F], sh: Shuffle[<*>]): Exists[[t] =>> (S ~⚬ t, F[Y1 |*| Y2, t])]

Translate to a different product type.

Translate to a different product type.

Attributes

Definition Classes

Inherited methods

def >[C](that: (Y1 |*| Y2) ~⚬ C): X1 |*| X2 ~⚬ C

Attributes

Inherited from:
~⚬
def after[Z](that: Z ~⚬ (X1 |*| X2)): Z ~⚬ Y1 |*| Y2

Attributes

Inherited from:
~⚬
def at[F[_]](f: Focus[|*|, F]): F[X1 |*| X2] ~⚬ F[Y1 |*| Y2]

Attributes

Inherited from:
~⚬
def fold[->[_, _]](using ev: SymmetricSemigroupalCategory[->, |*|]): X1 |*| X2 -> Y1 |*| Y2

Attributes

Inherited from:
~⚬
def from[Z](using ev: Z =:= (X1 |*| X2)): Z ~⚬ Y1 |*| Y2

Attributes

Inherited from:
~⚬
def inFst[C]: (X1 |*| X2 |*| C) ~⚬ (Y1 |*| Y2 |*| C)

Attributes

Inherited from:
~⚬
def inFst[C, D](snd: C ~⚬ D): (X1 |*| X2 |*| C) ~⚬ (Y1 |*| Y2 |*| D)

Attributes

Inherited from:
~⚬
def inSnd[P]: (P |*| X1 |*| X2) ~⚬ (P |*| Y1 |*| Y2)

Attributes

Inherited from:
~⚬
def inSnd[P, Q](fst: P ~⚬ Q): (P |*| X1 |*| X2) ~⚬ (Q |*| Y1 |*| Y2)

Attributes

Inherited from:
~⚬
override def invert: Composed[Y1 |*| Y2, X1 |*| X2]

Attributes

Definition Classes
Inherited from:
Composed
def productElementNames: Iterator[String]

Attributes

Inherited from:
Product
def productIterator: Iterator[Any]

Attributes

Inherited from:
Product
def project[C](p: Projection[|*|, Y1 |*| Y2, C]): ProjectRes[X1 |*| X2, C]

Attributes

Inherited from:
~⚬
def proveIdBw(outputIsAtomic: [x, y] => ((Y1 |*| Y2) =:= (x |*| y)) => Nothing): X1 |*| X2 =:= Y1 |*| Y2

Attributes

Inherited from:
~⚬
def to[C](using ev: (Y1 |*| Y2) =:= C): X1 |*| X2 ~⚬ C

Attributes

Inherited from:
~⚬