~⚬

libretto.lambda.Shuffle.~⚬
See the~⚬ companion object
sealed trait ~⚬[A, B]

Attributes

Companion
object
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
trait Composed[X, Y]
class Bimap[X1, X2, Y1, Y2]
class Xfer[A1, A2, X1, X2, B1, B2]
trait Id0[A, B]
class Id[X]

Members list

Value members

Abstract methods

def apply[F[_]](a: F[A])(using StrongZippable[|*|, F]): F[B]
def chaseBw[G[_], X](i: Focus[|*|, G])(using ev: B =:= G[X]): ChaseBwRes[A, G, X]
def chaseFw[F[_], X](i: Focus[|*|, F])(using ev: A =:= F[X]): ChaseFwRes[F, X, B]
def invert: B ~⚬ A
def preShuffle[F[_, _], C](f: F[B, C])(using PairwiseRel[|*|, |*|, F]): Exists[[X] =>> (F[A, X], X ~⚬ C)]
def projectProper[C](p: Proper[|*|, B, C]): ProjectProperRes[A, C]
def proveId(inputIsAtomic: [x, y] => (A =:= (x |*| y)) => Nothing): A =:= B
def translate[<*>[_, _], F[_, _], X](fa: F[A, X])(m: SemigroupalObjectMap[|*|, <*>, F], sh: Shuffle[<*>]): Exists[[t] =>> (X ~⚬ t, F[B, t])]

Translate to a different product type.

Translate to a different product type.

Attributes

Concrete methods

def >[C](that: B ~⚬ C): A ~⚬ C
def after[Z](that: Z ~⚬ A): Z ~⚬ B
def at[F[_]](f: Focus[|*|, F]): F[A] ~⚬ F[B]
def fold[->[_, _]](using ev: SymmetricSemigroupalCategory[->, |*|]): A -> B
def from[Z](using ev: Z =:= A): Z ~⚬ B
def inFst[C, D](snd: C ~⚬ D): (A |*| C) ~⚬ (B |*| D)
def inFst[C]: (A |*| C) ~⚬ (B |*| C)
def inSnd[P, Q](fst: P ~⚬ Q): (P |*| A) ~⚬ (Q |*| B)
def inSnd[P]: (P |*| A) ~⚬ (P |*| B)
def project[C](p: Projection[|*|, B, C]): ProjectRes[A, C]
def proveIdBw(outputIsAtomic: [x, y] => (B =:= (x |*| y)) => Nothing): A =:= B
def to[C](using ev: B =:= C): A ~⚬ C