Transfer

libretto.lambda.Shuffle.Transfer
See theTransfer companion object
sealed trait Transfer[A1, A2, B1, B2] extends TransferOpt[A1, A2, B1, B2]

Attributes

Companion
object
Graph
Supertypes
trait TransferOpt[A1, A2, B1, B2]
class Object
trait Matchable
class Any
Known subtypes
class AssocLR[A1, A2, A3, B2, B3]
class AssocRL[A1, A2, A3, B1, B2]
class IX[A1, A2, A3, B1, B2]
class IXI[A1, A2, A3, A4, B1, B2, B3, B4]
class Swap[X1, X2]
class XI[A1, A2, A3, B2, B3]
Show all

Members list

Value members

Abstract methods

infix def after[Z1, Z2](that: Transfer[Z1, Z2, A1, A2]): (Z1 |*| Z2) ~⚬ (B1 |*| B2)
def assocLR_this_assocRL[X, Y1, Y2](h: AssocRL[X, B1, B2, Y1, Y2]): (X |*| A1 |*| A2) ~⚬ (Y1 |*| Y2 |*| B2)
def assocLR_this_ixi[P1, P2, Q1, Q2, Q3, Q4](that: IXI[P1, P2, B1, B2, Q1, Q2, Q3, Q4]): (P1 |*| P2 |*| A1 |*| A2) ~⚬ (Q1 |*| Q2 |*| (Q3 |*| Q4))
def assocLR_this_xi[X, Y2, Y3](h: XI[X, B1, B2, Y2, Y3]): (X |*| A1 |*| A2) ~⚬ (B1 |*| (Y2 |*| Y3))
def assocRL_this_assocLR[X, Y2, Y3](h: AssocLR[B1, B2, X, Y2, Y3]): (A1 |*| (A2 |*| X)) ~⚬ (B1 |*| (Y2 |*| Y3))
def assocRL_this_ix[X, Y1, Y2](h: IX[B1, B2, X, Y1, Y2]): (A1 |*| (A2 |*| X)) ~⚬ (Y1 |*| Y2 |*| B2)
def assocRL_this_ixi[X1, X2, Y1, Y2, Y3, Y4](h: IXI[B1, B2, X1, X2, Y1, Y2, Y3, Y4]): (A1 |*| (A2 |*| (X1 |*| X2))) ~⚬ (Y1 |*| Y2 |*| (Y3 |*| Y4))
def invert: Xfer[B1, B2, _, _, A1, A2]
def ix_this_assocLR[X, Y2, Y3](that: AssocLR[B1, B2, X, Y2, Y3]): (A1 |*| X |*| A2) ~⚬ (B1 |*| (Y2 |*| Y3))
def ix_this_ix[X, Y1, Y2](that: IX[B1, B2, X, Y1, Y2]): (A1 |*| X |*| A2) ~⚬ (Y1 |*| Y2 |*| B2)
def ix_this_ixi[P1, P2, Q1, Q2, Q3, Q4](that: IXI[B1, B2, P1, P2, Q1, Q2, Q3, Q4]): (A1 |*| (P1 |*| P2) |*| A2) ~⚬ (Q1 |*| Q2 |*| (Q3 |*| Q4))
def ixi_fstThis_assocLR[P1, P2, Q1, Q2, R2, R3](g2: TransferOpt[P1, P2, Q1, Q2], that: AssocLR[B1, B2, Q1 |*| Q2, R2, R3]): (A1 |*| P1 |*| (A2 |*| P2)) ~⚬ (B1 |*| (R2 |*| R3))
def ixi_sndThis_assocRL[P1, P2, Q1, Q2, R1, R2](g1: TransferOpt[P1, P2, Q1, Q2], that: AssocRL[Q1 |*| Q2, B1, B2, R1, R2]): (P1 |*| A1 |*| (P2 |*| A2)) ~⚬ (R1 |*| R2 |*| B2)
def ixi_sndThis_xi[P1, P2, Q1, Q2, R2, R3](g1: TransferOpt[P1, P2, Q1, Q2], that: XI[Q1 |*| Q2, B1, B2, R2, R3]): (P1 |*| A1 |*| (P2 |*| A2)) ~⚬ (B1 |*| (R2 |*| R3))
infix def thenAssocLR[B11, B12, C2, C3](that: AssocLR[B11, B12, B2, C2, C3])(using ev: B1 =:= (B11 |*| B12)): (A1 |*| A2) ~⚬ (B11 |*| (C2 |*| C3))
infix def thenAssocRL[B21, B22, C1, C2](that: AssocRL[B1, B21, B22, C1, C2])(using ev: B2 =:= (B21 |*| B22)): (A1 |*| A2) ~⚬ (C1 |*| C2 |*| B22)
def thenBi[C1, C2](g1: B1 ~⚬ C1, g2: B2 ~⚬ C2): Xfer[A1, A2, _, _, C1, C2]
infix def thenIX[B11, B12, C1, C2](that: IX[B11, B12, B2, C1, C2])(using ev: B1 =:= (B11 |*| B12)): (A1 |*| A2) ~⚬ (C1 |*| C2 |*| B12)
infix def thenIXI[B11, B12, B21, B22, C1, C2, C3, C4](that: IXI[B11, B12, B21, B22, C1, C2, C3, C4])(using ev1: B1 =:= (B11 |*| B12), ev2: B2 =:= (B21 |*| B22)): (A1 |*| A2) ~⚬ (C1 |*| C2 |*| (C3 |*| C4))
def thenSwap: (A1 |*| A2) ~⚬ (B2 |*| B1)
infix def thenXI[B21, B22, C2, C3](that: XI[B1, B21, B22, C2, C3])(using ev: B2 =:= (B21 |*| B22)): (A1 |*| A2) ~⚬ (B21 |*| (C2 |*| C3))
def xi_this_assocRL[X, Y1, Y2](g: AssocRL[X, B1, B2, Y1, Y2]): (A1 |*| (X |*| A2)) ~⚬ (Y1 |*| Y2 |*| B2)
def xi_this_ixi[P1, P2, C1, C2, C3, C4](g: IXI[P1, P2, B1, B2, C1, C2, C3, C4]): (A1 |*| (P1 |*| P2 |*| A2)) ~⚬ (C1 |*| C2 |*| (C3 |*| C4))
def xi_this_xi[X, C2, C3](g: XI[X, B1, B2, C2, C3]): (A1 |*| (X |*| A2)) ~⚬ (B1 |*| (C2 |*| C3))

Concrete methods

def >[C1, C2](that: Transfer[B1, B2, C1, C2]): (A1 |*| A2) ~⚬ (C1 |*| C2)
final override def chaseBw[G[_], T](i: Focus[|*|, G])(using ev: (B1 |*| B2) =:= G[T]): ChaseBwRes[A1 |*| A2, G, T]

Attributes

Definition Classes
final override def chaseFw[F[_], T](i: Focus[|*|, F])(using ev: F[T] =:= (A1 |*| A2)): ChaseFwRes[F, T, B1 |*| B2]

Attributes

Definition Classes
override def fold[->[_, _]](using ev: SymmetricSemigroupalCategory[->, |*|]): (A1 |*| A2) -> (B1 |*| B2)

Attributes

Definition Classes
def ixi_fstThis_ix[P1, P2, Q1, Q2, R1, R2](g2: TransferOpt[P1, P2, Q1, Q2], that: IX[B1, B2, Q1 |*| Q2, R1, R2]): (A1 |*| P1 |*| (A2 |*| P2)) ~⚬ (R1 |*| R2 |*| B2)
final override def projectProper[C](p: Proper[|*|, B1 |*| B2, C]): ProjectProperRes[A1 |*| A2, C]

Attributes

Definition Classes
def to[C1, C2](using ev: (B1 |*| B2) =:= (C1 |*| C2)): Transfer[A1, A2, C1, C2]

Inherited methods

def asShuffle: (A1 |*| A2) ~⚬ (B1 |*| B2)

Attributes

Inherited from:
TransferOpt
def project[C](p: Projection[|*|, B1 |*| B2, C]): ProjectRes[A1 |*| A2, C]

Attributes

Inherited from:
TransferOpt
final def translate[<*>[_, _], F[_, _], S](fa: F[A1 |*| A2, S])(m: SemigroupalObjectMap[|*|, <*>, F], tgt: Shuffle[<*>]): Exists[[t] =>> (S ~⚬ t, F[B1 |*| B2, t])]

Attributes

Inherited from:
TransferOpt

Inherited and Abstract methods

def apply[F[_]](a: F[A1 |*| A2])(using F: StrongZippable[|*|, F]): F[B1 |*| B2]

Attributes

Inherited from:
TransferOpt
def chaseBwFst[G[_], T](i: Focus[|*|, G])(using B1 =:= G[T]): ChaseBwRes[A1 |*| A2, [t] =>> G[t] |*| B2, T]

Attributes

Inherited from:
TransferOpt
def chaseBwSnd[G[_], T](i: Focus[|*|, G])(using B2 =:= G[T]): ChaseBwRes[A1 |*| A2, [t] =>> B1 |*| G[t], T]

Attributes

Inherited from:
TransferOpt
def chaseFwFst[F[_], T](i: Focus[|*|, F])(using F[T] =:= A1): ChaseFwRes[[t] =>> F[t] |*| A2, T, B1 |*| B2]

Attributes

Inherited from:
TransferOpt
def chaseFwSnd[F[_], T](i: Focus[|*|, F])(using F[T] =:= A2): ChaseFwRes[[t] =>> A1 |*| F[t], T, B1 |*| B2]

Attributes

Inherited from:
TransferOpt
def ixiPairWith_:[X1, X2, X3, X4, Y1, Y2, Y3, Y4](that: IXI[X1, X2, X3, X4, Y1, Y2, Y3, Y4]): BiTransferOpt[X1 |*| X2, X3 |*| X4, A1, A2, Y1 |*| Y2, Y3 |*| Y4, B1, B2]

Attributes

Inherited from:
TransferOpt
def nonePairWith_:[X1, X2](that: None[X1, X2]): BiTransferOpt[X1, X2, A1, A2, X1, X2, B1, B2]

Attributes

Inherited from:
TransferOpt
infix def pairWith[X3, X4, Z1, Z2](that: TransferOpt[X3, X4, Z1, Z2]): BiTransferOpt[A1, A2, X3, X4, B1, B2, Z1, Z2]

Attributes

Inherited from:
TransferOpt
def preShuffle[F[_, _], C](f: F[B1 |*| B2, C])(using PairwiseRel[|*|, |*|, F]): Exists[[Q] =>> (F[A1 |*| A2, Q], Q ~⚬ C)]

Attributes

Inherited from:
TransferOpt
def swapPairWith_:[X1, X2](that: Swap[X1, X2]): BiTransferOpt[X1, X2, A1, A2, X2, X1, B1, B2]

Attributes

Inherited from:
TransferOpt
def translateLR[<*>[_, _], F[_, _], S1, S2](fa1: F[A1, S1], fa2: F[A2, S2])(m: SemigroupalObjectMap[|*|, <*>, F])(using tgt: Shuffle[<*>]): Exists[[T1] =>> Exists[[T2] =>> (TransferOpt[S1, S2, T1, T2], F[B1, T1], F[B2, T2])]]

Attributes

Inherited from:
TransferOpt
def translateRL[<*>[_, _], F[_, _], T1, T2](fb1: F[B1, T1], fb2: F[B2, T2])(m: SemigroupalObjectMap[|*|, <*>, F])(using tgt: Shuffle[<*>]): Exists[[S1] =>> Exists[[S2] =>> (F[A1, S1], F[A2, S2], TransferOpt[S1, S2, T1, T2])]]

Attributes

Inherited from:
TransferOpt