TransferOpt

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

Attributes

Companion
object
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
trait Transfer[A1, A2, B1, B2]
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]
trait None0[A1, A2, B1, B2]
class None[A1, A2]
Show all

Members list

Value members

Abstract methods

def apply[F[_]](a: F[A1 |*| A2])(using F: Cartesian[|*|, F]): F[B1 |*| B2]
def chaseBw[G[_], T](i: Focus[|*|, G])(using ev: B1 |*| B2 =:= G[T]): ChaseBwRes[A1 |*| A2, G, T]
def chaseBwFst[G[_], T](i: Focus[|*|, G])(using B1 =:= G[T]): ChaseBwRes[A1 |*| A2, [t] =>> G[t] |*| B2, T]
def chaseBwSnd[G[_], T](i: Focus[|*|, G])(using B2 =:= G[T]): ChaseBwRes[A1 |*| A2, [t] =>> B1 |*| G[t], T]
def chaseFw[F[_], T](i: Focus[|*|, F])(using ev: F[T] =:= A1 |*| A2): ChaseFwRes[F, T, B1 |*| B2]
def chaseFwFst[F[_], T](i: Focus[|*|, F])(using F[T] =:= A1): ChaseFwRes[[t] =>> F[t] |*| A2, T, B1 |*| B2]
def chaseFwSnd[F[_], T](i: Focus[|*|, F])(using F[T] =:= A2): ChaseFwRes[[t] =>> A1 |*| F[t], T, B1 |*| B2]
def fold[->[_, _]](using ev: SymmetricSemigroupalCategory[->, |*|]): A1 |*| A2 -> B1 |*| B2
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]
def nonePairWith_:[X1, X2](that: None[X1, X2]): BiTransferOpt[X1, X2, A1, A2, X1, X2, B1, B2]
def pairWith[X3, X4, Z1, Z2](that: TransferOpt[X3, X4, Z1, Z2]): BiTransferOpt[A1, A2, X3, X4, B1, B2, Z1, Z2]
def projectProper[C](p: Proper[|*|, B1 |*| B2, C]): ProjectProperRes[A1 |*| A2, C]
def swapPairWith_:[X1, X2](that: Swap[X1, X2]): BiTransferOpt[X1, X2, A1, A2, X2, X1, B1, B2]
def translateLR[<*>[_, _], F[_, _], S1, S2](fa1: F[A1, S1], fa2: F[A2, S2])(m: ObjectMap[|*|, <*>, F])(using tgt: Shuffle[<*>]): Exists[[T1] =>> Exists[[T2] =>> (TransferOpt[S1, S2, T1, T2], F[B1, T1], F[B2, T2])]]
def translateRL[<*>[_, _], F[_, _], T1, T2](fb1: F[B1, T1], fb2: F[B2, T2])(m: ObjectMap[|*|, <*>, F])(using tgt: Shuffle[<*>]): Exists[[S1] =>> Exists[[S2] =>> (F[A1, S1], F[A2, S2], TransferOpt[S1, S2, T1, T2])]]

Concrete methods

def asShuffle: A1 |*| A2 ~⚬ B1 |*| B2
def project[C](p: Projection[|*|, B1 |*| B2, C]): ProjectRes[A1 |*| A2, C]
final def translate[<*>[_, _], F[_, _], S](fa: F[A1 |*| A2, S])(m: ObjectMap[|*|, <*>, F], tgt: Shuffle[<*>]): Exists[[t] =>> (S ~⚬ t, F[B1 |*| B2, t])]